8 類的繼承

2021-09-12 02:58:20 字數 1571 閱讀 8635

import uikit

var str = "hello, playground"

// 1 類的繼承

// 繼承只能發生在類型別上,不能發生在列舉和結構體上面

// 2 構造器過程中的安全檢查

// 類的構造過程有一下

// 第一步:類的構造過程中包含兩個階段,第一步分配記憶體,初始化子類儲存屬性,沿著構造器鏈向上初始化父類儲存屬性。

// 第二步:從頂部構造器鏈往下,對每個類進行進一步修改儲存屬性,呼叫例項方法等處理。

// 建立乙個person 類

class person

}// 建立乙個student 繼承

class student:person

// 3 便利構造器

// 便利構造器必須小呼叫其他構造器**人,然後再為任意屬性賦新值

convenience init(name:string)

}var s = student(name: "curry");

print(s.name);

// 3 構造器繼承

// 類的構造器**有兩種,自己編寫和父類繼承,繼承的條件

// 如果子類沒有指定構造器 自動繼承父類的構造器

// 如果子類提供了所有父類指定構造器的實現,無論是通過條件1繼承過來的,還是通過自己編寫的,都自動繼承父類所有父類的便利構造器

// 4 重寫

// 乙個類繼承另外乙個類的屬性

// 4.1 屬性重寫

class p1

}class s1:p1

set}

init(name: string, age: int,schoole:string)

}var s1 = s1(name: "mike", age: 85, schoole: "kkk");

s1.age = 2;

print(s1.age);

// 4.2 方法重寫

// 在子類中重寫父類繼承來的例項方法和靜態方法

class p3

func printinfo() -> ()

class func sayhi() -> ()

}class s3:p3

// 重寫靜態方法

override class func sayhi() -> ()

}var s3 = s3(name: "ant", age: 12);

s3.printinfo();

s3.sayhi();

// 4.3 下標重寫

// 在類的定義前面使用final 關鍵字,表示此類不能別繼承

// 5 型別檢查與轉換

// 5.1 is 操作符 判斷乙個例項是否是某個類的型別 是的話返回true

if s3 is s3

// 5.2 使用as操作符

// 物件型別轉換一定發生在繼承的前提下

// 5.3 any 和 anyobject

// anyobject 可以表示任何類的例項

// any 可以表示任何型別 包括類和其他資料型別 int double 等基本資料型別

Day8 類的繼承

觀察兩個類的成員組成 提取相同的屬性和方法 寵物是父類,狗和金魚是子類。子類具有父類的屬性和方法。是使用已存在的類作為基礎建立新類的技術。單一繼承 只有乙個父類。父類可以叫做基類 超類。子類可以叫做派生類。子類可以繼承父類中的成員 屬性和方法 但是需要注意 1.private的成員不能繼承 2.子類...

c 筆記(8) 類的繼承 成員的重名 多繼承

1.類之間的關係 has a 包含關係,用以描述乙個類由多個 部件類 構成。實現has a關係用成員表示,即乙個類中的資料成員是另一種已經定義的類。uses a 乙個類部分地使用另乙個類。通過類之間成員函式的相互聯絡,定義友元或物件引數傳遞實現。is a 機制稱為 繼承 關係具有傳遞性,不具有對稱性...

python 類 繼承 python 類的繼承

1 所用的類都可以被繼承 2 沒有繼承其他類的類必然有乙個父類 object 3子類可以擁有父類的 init 裡的類容 派生子類除了父類的一些屬性,還會有自己的屬性和方法,這些就叫派生 如何使用 實現 class animal def init self,name,attack,hp self.na...