Swift的继承和结构体的初始化

/*

Swift的继承

如果要重写父类的存储属性

1.重写后可以给它加属性观察器。列一:

2.可以把其改为计算属性(但不可减少父类属性原本的功能)。列二:

3.父类的只读(只有get,或者let),子类不能添加属性观察器。列三:

如果重写父类的计算属性

1.父类计算属性只有只读,子类重写后可以给其加上seter方法。列四:

方法继承。列五:

*/

//列一:

class Person {

var name: String = "cj"

}

class Child:Person {

override var name: String {

willSet {

}

didSet {

}

}

//    override var name:string = "cj"  错误

}

//列二:

class Person2 {

var name: String = "cj"

}

class Child2:Person2 {

override var name: String {

get {

return "chenhe"

}

set {

}

}

}

//列三:

class Person3 {

var name: String {

return "chenhe"

}

let height: Int = 12

}

class Child3:Person3 {

//    override var name: String {

//        willSet {

//

//        }

//        didSet {

//

//        }

//    }

//    override let height: Int {

//        willSet {

//

//        }

//        didSet {

//

//        }

//    }

}

//列四:

class Person4 {

var name: String {

return "chenhe"

}

}

class Child4:Person4 {

override var name: String {

get {

return "chenhe"

}

set {

}

}

}

//列五:

class Person5 {

var name: String {

return "chenhe"

}

func x() {

print("你好")

}

}

class Child5:Person5 {

override func x() {

print("你们好")

}

}

//运行时多态

let a: Person5 = Child5()

a.x()

//初始化干两件事,分配空间,成员赋值

//结构体的初始化方法

struct Point {

var x: Int

var y: Int

}

//let p = Point 违背了初始化话原则,没有给成员赋值。下面这个就可以了列一:

let p = Point(x: 1, y: 2)

struct Point2 {

var x: Int = 4

var y: Int = 3

}

let p2 = Point2()//这样不会报错,分配了空间又给成员赋值了

struct Point3 {

var x: Int

var y: Int

//写一个很全的构造函数,可以初始化所有的成员

init(xx: Int,yy: Int) {

x = xx

y = yy

}

}

时间: 2024-08-03 20:05:32

Swift的继承和结构体的初始化的相关文章

Swift 的类、结构体、枚举等的构造过程Initialization(上)

构造过程是为了使用某个类.结构体或枚举类型的实例而进行的准备过程.这个过程包含了为实例中的每个属性设置初始值和为其执行必要的准备和初始化任务. 构造过程是通过定义构造器(Initializers)来实现的,这些构造器可以看做是用来创建特定类型实例的特殊方法.与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化. 类实例也可以通过定义析构器(deinitializer)在类实例释放之前执行特定的清除工作.想了解更多关于

[转]站在OC的基础上快速理解Swift的类与结构体

(阅读此文章前,您已经有一定的Object-C语法基础了!) 2014年,Apple推出了Swift,最近开始应用到实际的项目中. 首先我发现在编写Swift代码的时候,经常会遇到Xcode不能提示,卡顿,直接闪退等问题,尤其是在Swift和OC混编时.(不知道其他开发者是否也有这样的经历,但是我相信这样的问题,很快会得到解决) 然后感觉Swift并不像网上很多朋友说的那样简单.有很多细节问题是值得注意的,甚至有很多思路是颠覆了传统的开发语言的!又有很多特性是结合了其他编程语言的优点! Swif

在OC的基础上快速理解Swift的类与结构体

Swift中,类和结构体都是对数据和方法进行封装的常用做法!首先我们来看看他们的共同之处: 都可以有属性和方法: 都有构造器: 都支持附属脚本: 都支持扩展: 都支持协议. 然后我们来看看他们的不同之处: 类有继承: 结构体有一个自动生成的逐一初始化构造器: 在做赋值操作时,结构体总是被拷贝(Array有特殊处理): 结构体可以声明静态的属性和方法: 从设计模式的角度来分析,类的设计更侧重于对功能的封装,而结构体的设计更侧重于对数据的封装.(汽车与书架来区分类与结构体) 一.构造过程 1. 默认

关于数组、结构体的初始化{0}

关于数组.结构体的初始化 一直以来,初始化变量和数组常采用定义时赋值的方法,今天在定义一个结构体的时候发现了一些问题,查了下相关资料发现以往的使用确实有些误区,一直没有注意到,于是搜集了下零散的资料在此记录一下. 一.以往常用的初始化方式: 1 int a=0; /*a初始化为0*/ 2 int b[10]={0}; /*b中全部元素初始化为0*/ 想必一直这样使用也确实不会发现问题,按照惯性思维,把0换成1就是把全部元素初始化为1了!然而事实却并非如此,请看下面这段代码↓ 1 #include

Swift学习——A Swift Tour 枚举和结构体

Enumerations and Structures Enumerations   枚举的使用 使用 enum 定义一个枚举,枚举里面可以关联方法,比如下文中的描述方法 enum Rank: Int { case Ace = 1 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten case Jack, Queen, King func simpleDescription() -> String { switch self { ca

C语言一维数组、二维数组、结构体的初始化

C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始化后,a[0]=0,a[1]=1,… ,a[9]=9. (2)初始化时可以只对一部分元素赋初值.例如: static int a[10]={0,1,2,3,4}; 定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0. (3)将数组的元素值全部为0,可以用下面的方法:(方法一)

(转)关于linux中内核编程中结构体的赋值操作(结构体指定初始化)

网址:http://blog.chinaunix.net/uid-24807808-id-3219820.html 在看linux源码的时候,经常会看到类似于下面的结构体赋值的代码: struct device my_dev = { .bus = &my_bus_type, .parent = &my_bus, .release = my_dev_release, }; 整体上看,貌似与我们平时遇到的结构题赋值差不多,可是在变量前面加了一个点,好像我们就不知道是什么意思了.  上面的这种赋

C语言结构体的初始化

今天在工作时,看到了奇葩的结构体初始化方式,于是我查了一下C99标准文档和gcc的说明文档,终于搞清楚是怎么回事了. 假设有如下结构体定义: typedef struct { int a, b, c; } MyStruct; 那么结构体的初始化方式如下有三种: (1) C89的初始化方式 MyStruct test = {1, 2, 3}; 这种初始化的优点是语法简单,无需输入变量名:缺点是成员变量的初始化顺序必须与声明的一致,无法乱序初始化. (2) C99新增的初始化方式 MyStruct

Swift学习之类和结构体的创建

随着一步步的学习,学习到的新知识越来越多了,不管是新的还是旧的,都禁不住时间的堆积,再熟悉的知识点时间久了都会渐渐的忘记,也许这就是人们生活中一种潜在的惰性吧,看似非常熟悉的东西,等到真正要用的时候,却拿不出手来,总是似懂非懂的,所以无论知识点多么多,过的时间多久,我们都要经常拿出来练习下,以免忘记.这些对于我们来说都是非常重要的,有的人会认为我记性非常好,写一遍都可以记住,但是真的是这样吗,所话说的好,好记性不如烂笔头,说的就是那些好吃懒做的人,所以我希望大家都可以多动手,经常练习我们所学过的