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. DotNetNuke-DNN Module模块引用自定义CSS或者JS文件

    当新增一个module时,有时会引用自定义的或者第三方CSS.JS文件. 1.添加自定义的CSS时,可以直接在module的根目录下添加module.css,然后框架会自动加载此CSS: 2.这个比较 ...

  2. Eclipse 安装使用 Maven

    安装 Maven 下载 Maven  http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9 ...

  3. Android中通过代码获取arrays.xml文件中的数据

    android工程res/valuse文件夹下的arrays.xml文件中用于放各种数组数据,比如字符串数组.整型数组等,数组中的数据可能是具体的值,也有可能是对资源数据的引用,下面针对这两种情况通过 ...

  4. java数组复制的方式和效率比较

    java中,数组的复制有以下三种方式: 1. 调用System.arraycopy(Arrays.copyOfRange可以当作第四种,但是底层调用的是System.arraycopy,所以,认为是同 ...

  5. relative与absolute相结合

    relative会把别人挤下去, absolute会跑偏. 两者结合就会很好的解决问题. <span class='pic_selected' style='position:relative; ...

  6. HibernateTemplate和HibernateDaoSupport

    Spring整合Hibernate后,为Hibernate的DAO提供了两个工具类:HibernateTemplate和HibernateDaoSupport HibernateTemplateHib ...

  7. 【考虑周全+数学变形】【11月赛】Is it a fantastic matrix?

    Is it a fantastic matrix? Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/ ...

  8. 虚拟化之KVM的安装篇

    1,在安装KVM之前,首先需要在自己的电脑开启cpu虚拟化技术(这个需要BIOS中设置). 如下操作都是在本人虚拟机中设置,所以可以看到我多添加一块磁盘,目的是用来做kvm虚拟机的磁盘. 另外,虚拟机 ...

  9. vlc-android对于通过Live555接收到音视频数据包后的处理分析

    通过ndk-gdb跟踪调试vlc-android来分析从连接到RTSP服务器并接收到音视频数据包后的处理过程. 首先,从前面的文章有分析过vlc-android的处理过程通过线程函数Run()(Src ...

  10. Sharepoint2010 通过 WebFeature 修改web.config

    using System;using System.Runtime.InteropServices;using System.Security.Permissions;using Microsoft. ...