初学swift笔记 继承(十)
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笔记 继承(十)的更多相关文章
- 初学swift笔记 结构体(八)
import Foundation /* 和类很相似 结构体 -> 封装 属性.方法 结构体是值类型 */ //定义一个LSQ类型的结构体 关键字struct struct LSQ { var ...
- 初学swift笔记 流程控制(五)
import Foundation ; i<=; i++ { println(i) } let str1="adl;fjasdfl;ouewrouqwperuadf" for ...
- 初学swift笔记运算符(二)
swift 中的运算符 import Foundation //字符类型 var char: Character = "a" char="b" println( ...
- 初学swift笔记变量的定义(一)
swift变量的定义 1 import Foundation /* 变量的定义 变量的类型是可以不用写的 var a=10 常量的定义 let修饰 */ print(a) let b= print(b ...
- swift 笔记 (二十) —— 泛型
泛型 泛型是为了解决在针对不同数据类型.而做了同一种功能的操作导致的每一个类型我们都要写一份代码的问题. 有了泛型,我们能够仅仅写一份逻辑代码,而适应于不同的数据类型. func swapInt(in ...
- 初学swift笔记 方法(九)
import Foundation /* 方法 */ //实例方法 一定需要依附于对象 class MyPoint { var x: Double = 0.0 var y: Double = 0.0 ...
- 初学swift笔记 枚举(七)
import Foundation /* 枚举 语法结构 enum 类型 { case 值 } */ //定义一个枚举 写法1 enum LiuShiQun { case Name case Age ...
- 初学swift笔记 函数(六)
import Foundation /* func 函数名 (参数名:参数类型) { } func 函数名 (参数名:参数类型) ->Void{ } func 函数名 (参数名:参数类型) -& ...
- 初学swift笔记字典、数组(四)
import Foundation //字典 元素顺序是无序的 //1.字典元素是键值对 (key:value) //key 一定是可哈希的 string\int\bool var dic1=[&qu ...
随机推荐
- Orchard开源ASP.NET MVC CMS简介
项目简介: Orchard CMS 是一个免费的开放源代码内容管理系统,让用户可在 Microsoft ASP.NET MVC 平台上快速创建网站.它基于灵活的扩展性框架构建,使开发人员和定制人员可通 ...
- HTML5 canvas 在线画笔绘图工具(一)
HTML5 canvas 在线画笔绘图工具(一) 功能介绍 这是我用Javascript写的第一个程序,在写的过程中走了很多弯路,所以写完之后想分享出来,给与我一样的初学者做为学习的参考,同时在编写这 ...
- ssh整合web.xml过滤器和监听器的配置 .
延迟加载过滤器 Hibernate 允许对关联对象.属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行.如果 Service 层返回一个启用了延迟 ...
- 解决mac ssh连linux中文乱码的问题[转]
将Mac下/etc/ssh_config中的SendEnv LANG LC_*这一行用#号注释掉 reference: http://www.zhihu.com/question/20117388
- Mysql MERGE 引擎在分表环境下得使用
应用场景:当我们在做分表的时候,通常会把一个大表的数据拆分成若干个分表,这也是数据库优化中的分表概念.随着分表随之而来的问题就是多表查询. 现在有 t1,t2 两张数据表,需要满足不同的查询条件同时从 ...
- ASP.NET MVC 4.0 学习3-Model
Model負責獲取數據庫中的資料,並對數據庫中的數據進行處理. MVC中有關 數據庫 的任務都由Model來完成,Model中對數據資料進行定義,Controller和View中都會參考到Model, ...
- Working——流程关系状态表
--主表单 select * from ce_administration_procure t where t.id ='HZe992733d668dc6013d671df4760349'; --流程 ...
- java设计模式--行为型模式--状态模式
什么是行为型模式,小编觉得就是对行为的一种描述啦,一种对某种行为模型的定义. 状态模式: 状态模式 概述 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被 ...
- kibana 版本kibana-4.3.1 修改地图
进入到安装目录下的src/ui/public/vislib/visualizations/目录 1.编辑_map.js文件 1 2 //url: 'https://otile{s}-s.mqcdn.c ...
- codecomb 2090【最小乘积路】
题目描述 给定n个点的带权有向图,求从1到n的路径中边权之积最小的简单路径. 输入格式 第一行读入两个整数n,m,表示共n个点m条边. 接下来m行,每行三个正整数x,y,z,表示点x到点y有一条边权为 ...