类的继承和初始化1

父类

class Parent {
var p1: String {
get{
return "dasf"
}
set {

}
}
var p2: Int = 5

func m() {
print("parent m")
}
final func n(){

} //不能被子类继承
}

子类,方法的重写

class Child: Parent {
//如果要重写父类的存储属性
//1.重写后可以给它加观察者(新功能)
//2.可以把其改为计算属性 (但是不能减少其功能)
//3.父类的只读(只有get,或者let),子类不能添加观察者
// override var p1: String = "afa"

override var p1: String {
willSet {

}
}
// override var p1: String {
//
// }

// override var p1: String {
//
// get {
// return "dasdf"
// }
// set {
//
// }
//
// }
override func m() {
print("child m")
}

}

怎么创建一个Child()类型

let instance:Parent = Child()
instance.m()

//
//这种情况只添加memberwise init

struct Point {
var x: Int
var y: Int
}

let p = Point(x: 5, y: 6)

//这种自动添加memberwise 和默认

struct Point2 {
var x: Int = 1
var y: Int = 2
}

这种不会添加

struct Point3 {
var x: Int = 1
var y: Int = 2

init(xx: Int) {
self.init(xx:xx,yy:1)
}
init(yy: Int) {
// x = 1
// y = yy
self.init(xx:1,yy: yy) //self是不能省略的
}//写一个很全的构造函数,可以初始化所有的成员init(xx: Int ,yy: Int){x = xxy = yy}}

有3种调用的方法

let p3 = Point3(xx: 1)
let p3 = Point3(yy: 1)
let p3 = Point3(xx: 1,yy: 2)
时间: 2024-08-25 11:46:38

类的继承和初始化1的相关文章

[Java] 类和接口的初始化步骤 - 继承方面

类和接口在初始化化时,处理继承层级的方法不一样. 类继承的初始化:通过引用 static 字段,触发某个类的初始化,则声明该字段的类,以及该类的父类被初始化. 接口继承的初始化:通过引用 static 字段,触发某个接口的初始化,则声明该字段的接口会被初始化,但该接口的父接口不会被初始化. 想了解其他触发类初始化的方法,可参看另一篇博文 类的初始化步骤 . 注意一点,接口字段全部隐式地被修饰为 public, static, final .因此,所有的接口字段实际上都是 static 的,无论有

Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺

class B extends A ,然后A类也就是父类里面有静态代码块,普通代码块,静态方法,静态成员变量,普通成员变量,普通方法.子类也是这样,然后继承之后,关于程序打印输出的结果.涉及到Java类的各种成员的初始化顺序.经测试,得到如下结论: 1.父类[静态成员]和[静态代码块],按在代码中出现的顺序依次执行.2.子类[静态成员]和[静态代码块],按在代码中出现的顺序依次执行.3.父类的[普通成员变量被普通成员方法赋值]和[普通代码块],按在代码中出现的顺序依次执行.4.执行父类的构造方法

类与继承(一)

在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在public,则类文件的名称可以为任意的名称(当然以数字开头的名称是不允许的). 在类内部,对于成员变量,如果在定义的时候没有进行显示的赋值初始化,则Java会保证类的每个成员变量都得到恰当的初始化: 1)对于  char.short.byte.int.long.float.double等基本数据类型的变量来说会默认初始

java继承2——类与继承(转)

一.你了解类吗? 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在public,则类文件的名称可以为任意的名称(当然以数字开头的名称是不允许的). 在类内部,对于成员变量,如果在定义的时候没有进行显示的赋值初始化,则Java会保证类的每个成员变量都得到恰当的初始化: 1)对于  char.short.byte.int.long.float.double等基本数据类型的

模块的封装之C语言类的继承和派生

[交流][微知识]模块的封装(二):C语言的继承和派生 在模块的封装(一):C语言的封装中,我们介绍了如何使用C语言的结构体来实现一个类的封装,并通过掩码结构体的方式实 现了类成员的保护.这一部分,我们将 在此的基础上介绍C语言类的继承和派生.其实继承和派生是一个动作的两种不同角度的表达 .当我们继承了一个基类而创造了一个新类时,派生的概念就诞生了.派生当然是从基类派生的.派生出来的类当然是继承了基类的 东西.继承和派生不是一对好基友,他们根本就是一个动作的两种不同的说法,强调动作的起始点的时候

C++中组合和继承的初始化

在C++中单个类的初始化比较简单就略过不说. 当一个类继承了另外一个类,或者是一个类中还存在一个类 class A{ ... }: class B { ... }: class C:classA{ private: B bb; int x public: C(int ii):B(ii),bb(ii) ,x(ii){}; }: 此时我们进行初始化的设置采用的 C(int ii):B(ii),bb(ii), x(ii)这里必须说清楚的有几点: 1.参数是通过C(int ii)向冒号之后的类或者是变量

python 类定义 继承

1 定义一个时间类,带默认参数 class mytime(object): def __init__(self,hour=21, minute=13, second=50): self.hour = hour self.minute = minute self.second = second def __str__(self): return '__str__ hour:minute:second = %02d:%02d:%02d' %(self.hour,self.minute,self.se

继承的初始化过程

看think in java 7.9.1继承的初始化过程的例子,并没有讲到static 代码块的初始化顺序 类在初次使用的时候才会被加载,static代码会在加载的时候初始化,所以一个类按照先加载static变量—>static 代码块->普通变量->构造器代码 的顺序进行初始化 而出现继承的时候,类的初始化顺序如下 1.父类的static 变量 2.父类的static 代码块 3.子类的static 变量 4.子类的static 代码块 5.父类的变量 6 父类的构造器 7 子类的变量

Python 进阶(四)类的继承

继承一个类 如果已经定义了Person类,需要定义新的Student和Teacher类时,可以直接从Person类继承: class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender 定义Student类时,只需要把额外的属性加上,例如score: class Student(Person): def __init__(self, name, gender, score)