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. 把EXCEL列号数字变成字母

    把Excel 列号数字变成字母 private static string ToName(int index) { if (index < 0) { throw new Exception(&q ...

  2. 如何让EcStore和微博同步来推广网站

    EcStore是创建B2C商城的首选PHP系统,它功能强大.操作方便,安装后马上就能建立起一个自己的B2C商城,但建好后如何推广运营商城却不是件容易的事. 新浪微博用户数量大.传播速度快,互联网上拥有 ...

  3. leiningen安装记录

    Leiningen是Clojure项目管理工具Leiningen is the easiest way to use Clojure,官网:http://leiningen.org/ 1:首先下载Le ...

  4. HtmlAgilityPack - 简介

    HtmlAgilityPack是.net下的一个HTML解析类库.支持用XPath来解析HTML.这个意义不小,为什么呢?因为对于页面上的元素的xpath某些强大的浏览器能够直接获取得到,并不需要手动 ...

  5. 八大排序c++可运行精简版,一目了然

    #include <iostream> using namespace std; // 插入排序开始===================== void insert_sort(int a ...

  6. java时间比较

    public static void main(String[] args) throws Exception{//判断某个时间是否为当前时间 String dataStr="2014-07 ...

  7. Unique Binary Search Trees II 解答

    Question Given n, generate all structurally unique BST's (binary search trees) that store values 1.. ...

  8. (转)ZOJ 3687 The Review Plan I(禁为排列)

    The Review Plan I Time Limit: 5 Seconds      Memory Limit: 65536 KB Michael takes the Discrete Mathe ...

  9. nsinteger 与 int 区别

    在苹果的api实现中,NSInteger是一个封装,它会识别当前操作系统的位数,自动返回最大的类型.   当你不知道你的操作系统是什么类型的时候,你通常会想要使用NSInteger,所以或许你想要你的 ...

  10. Struts2+Spring集成合并

    前边单独总结了Struts2,Spring和Ibaits框架了,那么怎么结合使用呢?这次先来看一下Sturts2和Spring的集成合并.其实挺简单的,就是导入各自的jar包以及连接彼此的jar包,分 ...