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. canvas总结:元素大小与绘图表面大小

    前言 我们使用canvas的时候一般在canvas元素中直接设置它的width和height: <canvas id="myCanvas" width="300&q ...

  2. 【python学习笔记01】python的数据类型

    python的基本数据类型 整型 int 浮点型 float 真值 bool 字符串 str 列表 list       #[1,2,3] 元组 tuple    #(1,2,3) 字典 dict   ...

  3. windows平台使用Microsoft Visual C++ Compiler for Python 2.7编译python扩展

    在windows平台上安装python c extension的扩展包是件很痛苦的事情,一般通过安装vc/vs系列来编译C扩展,不过安装包都比较大.或者通过mingw编译,不过有时会在兼容性上出现点问 ...

  4. thinkphp项目目录

    #   ThinkPHP核心文件介绍        ├─ThinkPHP.php     框架入口文件    ├─Common 框架公共文件    ├─Conf 框架配置文件    ├─Extend ...

  5. Clojure操作mysql

    在Eclipse中新建一个Clojure工程clj01 clojure 操作mysql需要依赖mysql-connector-java.clojure-contrib与java.jdbc三个jar包. ...

  6. 激活前一个程序(注册全局消息,使用Mutex探测,如果已经占用就广播消息通知第一个程序,然后第一个程序做出响应)

    unit MultInst; interface const MI_QUERYWINDOWHANDLE = ; MI_RESPONDWINDOWHANDLE = ; MI_ERROR_NONE = ; ...

  7. socket基础(二)

    Microsoft.Net Framework为应用程序访问Internet提供了分层的.可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类 ...

  8. WPF制作的一个小功能,智能提示(IntelliSense)

    原文http://www.cnblogs.com/scheshan/archive/2012/06/30/2570867.html 最近WPF项目中遇到一个需求,需要给一个RichTextBox添加智 ...

  9. 在WPF中使用ArcGIS Engine

    原文 http://blog.csdn.net/zzahkj/article/details/9102621 1.首先,新建一个WPF项目,添加引用ESRI.ArcGIS.AxControls.ESR ...

  10. SQL学习笔记——SQL初入门,Ubuntu下MySQL的安装

          刚开始接触sql,于是准备在Ubuntu下学习sql,就跟着itercast的sql教程开始入门了. 下面只是我个人的记录,高手请绕道: 一. 在安装之前,我们可以用下面这个命令通过开放端 ...