import Foundation
/*
继承 class childClass: FatherClass{ }
优点 代码重用
缺点 增加程序的藕合度 父类的改变会影响子类 只能单继承
*/
class Human{
var name: String=""
var id: Int=
func eat(){
println("吃饭")
}
func drink(){
println("喝水")
}
func sleep(){
println("睡觉")
}
}
class Woman : Human { func birth(){
println("birth")
}
} let w_woman = Woman()
w_woman.eat()
w_woman.name="aaa" //super关键字 派生类中的方法实现中,可以通过super关键字来引用基类的属性和方法 class LSQ : Human{
func eatAndSleep(){
super.eat() //用super修饰此方法 ,告诉编译器到当前类的父类去查找。表示调用父类的方法
sleep()
say()
}
func say(){
println("hello")
}
}
//方法 属性重写 override关键字
class LSQ1 : Human{
func eatAndSleep(){
super.eat() //调用父类方法
super.sleep()
}
override func eat() {//重写父类方法
println("LSQ1 eat")
} } let lsq_1 = LSQ1()
lsq_1.eatAndSleep()
lsq_1.eat() class Father{
var storePreperty: Int = //存储属性
var coputePreperty: Int{ //计算属性
get{
return
}
set{
println("In Father Class Set \(newValue)")
}
}
var coputePrepertys: Int{ //计算属性
get{
return
}
}
}
//重写的属性 呈现的是计算属性
/*重写的限制,
1.属性重写,父类如果有get set 子类重写后必须拥有get set
2.不可以重写为只读的计算属性
3.父类计算属性是只读的时候,子类可重写为只读、读写的计算属性 属性权利可以放大,不可以减小
*/
class Child: Father {
//将父类的存储属性重写为计算属性,不可以将存储属性重写成存储属性
override var storePreperty : Int { //重写了父类的存储属性
get{
return
}
set{
println("In Child Class Set \(newValue)")
}
}
//父类的计算属性,重写为计算属性 ,不可以重写为存储属性
override var coputePreperty : Int{
get{
return
}
set{
println("child coputePreperty")
}
}
//重写只读的计算属性
override var coputePrepertys : Int{
get{
return
}
set{
println("child coputePreperty")
}
}
} var test = Child()
println(test.storePreperty) /*
重写 属性观察器
1.只能给非lazy属性的变量存储属性设定属性观察器,不能给计算属性设定属性观察器
2.父类属性必须是可读写的,否则不能重写属性观察器
*/
class myF{
var name: String = "" {
willSet{
println("修改前\(newValue)")
}
didSet{
println("修改后\(oldValue)")
}
} }
class my_a: myF{
override var name : String {
willSet{
println("重写修改前\(newValue)") }
didSet{
println("重写修改后\(oldValue)")
}
}
func getname() -> String {
return super.name
}
}
//重写了属性观察器,并没有重写存储属性
var my_z = my_a()
my_z.name="LSQ"
println(my_z.name)
println(my_z.getname()) /*
防止重写
关键字 final
修饰类 表示 类不可以被继承
修饰属性或方法,表示相应的属性或方法不能被重写
*/
class Test_Father{
final var name: String = "abc"
final func getName(){
println("getName")
}
} class Test_child: Test_Father {
// override var name: String = "a" //报错,不可以重写
// override func getName(){} //报错,不可以重写 }
 

初学swift笔记 继承(十)的更多相关文章

  1. 初学swift笔记 结构体(八)

    import Foundation /* 和类很相似 结构体 -> 封装 属性.方法 结构体是值类型 */ //定义一个LSQ类型的结构体 关键字struct struct LSQ { var ...

  2. 初学swift笔记 流程控制(五)

    import Foundation ; i<=; i++ { println(i) } let str1="adl;fjasdfl;ouewrouqwperuadf" for ...

  3. 初学swift笔记运算符(二)

    swift 中的运算符 import Foundation //字符类型 var char: Character = "a" char="b" println( ...

  4. 初学swift笔记变量的定义(一)

    swift变量的定义 1 import Foundation /* 变量的定义 变量的类型是可以不用写的 var a=10 常量的定义 let修饰 */ print(a) let b= print(b ...

  5. swift 笔记 (二十) —— 泛型

    泛型 泛型是为了解决在针对不同数据类型.而做了同一种功能的操作导致的每一个类型我们都要写一份代码的问题. 有了泛型,我们能够仅仅写一份逻辑代码,而适应于不同的数据类型. func swapInt(in ...

  6. 初学swift笔记 方法(九)

    import Foundation /* 方法 */ //实例方法 一定需要依附于对象 class MyPoint { var x: Double = 0.0 var y: Double = 0.0 ...

  7. 初学swift笔记 枚举(七)

    import Foundation /* 枚举 语法结构 enum 类型 { case 值 } */ //定义一个枚举 写法1 enum LiuShiQun { case Name case Age ...

  8. 初学swift笔记 函数(六)

    import Foundation /* func 函数名 (参数名:参数类型) { } func 函数名 (参数名:参数类型) ->Void{ } func 函数名 (参数名:参数类型) -& ...

  9. 初学swift笔记字典、数组(四)

    import Foundation //字典 元素顺序是无序的 //1.字典元素是键值对 (key:value) //key 一定是可哈希的 string\int\bool var dic1=[&qu ...

随机推荐

  1. linux bugfree 安装

    前段时间用了下bugzilla,请参考:linux bugzilla nginx 安装配置 详解,感觉不是很好用.下面说一下,bugfree的安装 bugfree3.0.1是用php的yii框架开发的 ...

  2. javascrit字符串截取

    昨天遇见一个问题就是一个地址后面加参数第一次是需要添加参数,以后每次点击按钮的时候是替换如果不进行处理的话如果页面不刷新,地址会不断的添加越来越长,所以

  3. css清除浮动解决方案

    清除浮动包括清除子元素的浮动和清除上级元素的浮动,其中清除上级元素的浮动,只需设置clear为both就可以了,而清除子元素的浮动则可以用空标签法.clearfix方法或overflow方法.因清除上 ...

  4. Silverlight 结合ArcGis 在地图上画线

    原文 http://www.dotblogs.com.tw/justforgood/archive/2012/05/10/72085.aspx 先来看看完成后的画面,我从桃园画到高雄,再由高雄画到香港 ...

  5. DM365视频处理流程/DM368 NAND Flash启动揭秘

    出自http://blog.csdn.net/maopig/article/details/7029930 DM365的视频处理涉及到三个相关处理器,分别是视频采集芯片.ARM处理器和视频图像协处理器 ...

  6. SQL数据转移

    方法一:如果想把数据库A中的表Table1中的数据复制到数据库B中的表Table2中,也就是要预先建立Table2,可以使用一下语句: use B goinsert into Table2 selec ...

  7. loadlibrary(xxx.dll) 失败 返回14001 由于应用程序配置不正确 应用程序未能启动.重新安装应用程序可能会纠正这个问 .

    欢迎大家拍砖! 一.应用背景 有一个在win7中用VS2008编译成功,运行正常的程序:Exe+DLL; 放到XP虚拟镜像上运行却提示:LoadLibrary返回14001. (1) 后来采用了下面方 ...

  8. ARM架构和X86架构对比

    转载地址 我们就ARM架构的系统与X86架构系统的特性进行一个系统分析,方便用户在选择系统时进行理性.合理的比价分析. 一.性能: X86结构的电脑无论如何都比ARM结构的系统在性能方面要快得多.强得 ...

  9. cf479A Expression

    A. Expression time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  10. hdu1172猜数字(暴力枚举)

    猜数字 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...