swift Day05 OOP
1641 ワード
人は対象となる言語を身につけなければならない.継承重荷とマルチステートが3つの特徴です
まずclassを定義して人間を表す
そしてclassを作成して従業員を表します.もちろん、人間です.
このとき、PersonとEmployeeでは、多くの内容が重複していることがわかります.たとえば、いくつかのプロパティは重複しており、initメソッドの一部のコードも重複しています.An Employee IS A Personとも言える.
オブジェクト向けプログラミングでは、2つのタイプの関係をIS Aで記述できる場合、「継承」(Inheritance)を使用して定義する必要があります.大学院受験の時の単語はこのように使われた.次のようにします.
「ベースクラスのメソッドが予期せぬ変更を避けるためには、overrideキーワードを使用してリロードするメソッドを明確に定義する必要があります.そうしないと、コンパイラはエラーを報告します.」例えばPersonクラスにはsleep()メソッドがあり、継承クラスでsleepメソッドを変更するには、sleepメソッドのfuncを定義する前にoverrideを付ける.
マルチステート
継承
まずclassを定義して人間を表す
class Person {
let name : String
let age : Int
init(name : String, age : Int) {
self.name = name
self.age = age
}
}
そしてclassを作成して従業員を表します.もちろん、人間です.
class Employee {
let name: String
let age: Int
let dept: String
init(name: String, age: Int, dept: String) {
self.name = name
self.age = age
self.dept = dept
}
}
このとき、PersonとEmployeeでは、多くの内容が重複していることがわかります.たとえば、いくつかのプロパティは重複しており、initメソッドの一部のコードも重複しています.An Employee IS A Personとも言える.
オブジェクト向けプログラミングでは、2つのタイプの関係をIS Aで記述できる場合、「継承」(Inheritance)を使用して定義する必要があります.大学院受験の時の単語はこのように使われた.次のようにします.
class employee : Person {
let dept : String
init(name : String, age : Int, dept : dept) {
self.dept = dept
super.init(name: name, age: age)
}
}
let me = Person(name : "11", age : 23)
let work = Employee(name : "11", age : 32, dept: "Development")
「ベースクラスのメソッドが予期せぬ変更を避けるためには、overrideキーワードを使用してリロードするメソッドを明確に定義する必要があります.そうしないと、コンパイラはエラーを報告します.」例えばPersonクラスにはsleep()メソッドがあり、継承クラスでsleepメソッドを変更するには、sleepメソッドのfuncを定義する前にoverrideを付ける.
マルチステート func selltAlert(person: Person) {
person.sleep()
}
sleetAlert(me)
sleetAlert(worker)
私たちが私を伝えるとき、sleepAlertのパラメータは私にPersonオブジェクトとされました.私たちがworkerを渡すと、sleepAlertのパラメータworkerはEmployeeオブジェクトとして扱われます.
1つのプログラミング言語では、コンテキストに応じて同じタイプのオブジェクトに対して異なる処理方法を持つ能力を「マルチステート」(Polymorphism)と呼ぶことができます.
func selltAlert(person: Person) {
person.sleep()
}
sleetAlert(me)
sleetAlert(worker)