swift继承
来源:互联网 发布:绵投控股网络商学院 编辑:程序博客网 时间:2024/06/05 17:47
/**
1.定义一个基类
2.子类生成
3.重写
4.防止重写
一个类可以继承另一个类的方法,属性和其他特性,在swift中,继承是区分类与其他类型的一个基本特征
类可以调用和访问父类的方法,属性和附属脚本,并且可以重写这些方法,属性和附属脚本来优化或修改它们的行为。
也可以为类中继承来的属性添加属性观察器
*/
//定义基类
/**
不继承于其它类的类,称之为基类(base class)
swift中的类并不是从一个通用的基类继承而来,如果你不为你定义的类指定一个父类,这个类就自动成为基类
*/
class Vehicle {
var numberOfWheels: Int;
var maxPassengers:Int;
func description() -> String {
return"\(numberOfWheels) wheels; up to\(maxPassengers) passengers";
}
init() {
numberOfWheels =0;
maxPassengers =1;
}
}
//子类生成
/**
子类生成指的是在一个已有类的基础上创建一个新的类
class SomeClass: SomeSuperclass { // 类的定义
}
*/
class Bicycle: Vehicle {
//Override是重写:方法名称、参数个数,类型,顺序,返回值类型都是必须和父类方法一致的。它的关系是父子关系
override init() {
super.init();
numberOfWheels =2;
}
}
/**
子类只允许修改从父类继承来的变量属性,而不能修改继承来的常量属性
*/
//let a = Bicycle();
//print(a.numberOfWheels);
class Tandem: Bicycle {
override init() {
super.init();
maxPassengers =2;
}
}
let tandem = Tandem();
print("\(tandem.description())");
//重写(overriding)
/**
子类可以为继承来的实例方法、类方法、实例属性、或附属脚本提供自己定制的实现,这种行为叫重写
*/
//重写方法
class Car: Vehicle {
var speed: Double =0.0;
override init() {
super.init();
maxPassengers =5;
numberOfWheels =4;
}
override func description() ->String {
returnsuper.description() +";" + "traveling at \(speed) mph";
}
}
let car = Car();
print(car.description());
//重写属性
/**
可以重写继承来的实例属性或类属性,提供自己定制的getter和setter,或添加属性观察器使重写的属性观察属性值什么时候发生变化
可以将继承来的只读属性重写成读写属性,但不能把读写属性重写成只读属性
如果在重写属性中提供stter,那么一定要提供getter。如果不想在重写版本中的getter里修改继承了的属性值,可以直接返回super,someProperty来返回继承来的值
*/
class SpeedLimitedCar: Car {
override var speed:Double {
get {
return super.speed;
}
set {
super.speed =min(newValue, 40.0);//返回最小的数
}
}
}
let limitedCar = SpeedLimitedCar();
limitedCar.speed =60.0;
print(limitedCar.description());
//重写属性观察器
class AutomaticCar: Car {
var gear = 1;//档位
override var speed:Double {
didSet {
gear = Int(speed /10.0) + 1;
}
}
override func description() ->String {
return super.description() +"in gear \(gear)";
}
}
let automatic = AutomaticCar();
automatic.speed = 50.0;
print(automatic.description());
//防止重写
/**
可以通过把方法,属性或附属脚本标记为final来防止它们被重写,只需要在声明关键字前加上@final特性即可
@final func, @final class func, @final subscript, @final var
*/
- [Swift]继承
- Swift继承
- swift继承
- Swift 继承
- swift继承
- Swift 继承
- Swift继承
- Swift-继承
- swift继承
- swift 继承
- Swift 继承
- 【Swift初见】Swift继承
- Swift --- 2.13继承
- Swift 继承(十二)
- Swift入门教程11-继承
- Swift 类的继承
- swift 类继承
- Swift 第十课继承
- GPIO-KEY的实现原理及使用方法
- linux安装gunplot和简单使用
- 值得你关注的Android6.0上的重要变化(二)
- Git bash常用命令
- 第7讲 建立交叉编译环境
- swift继承
- C#中如何调用Webservice接口
- Hot Potato-Windows上的提权漏洞
- HTTP协议详解
- 【实验四】独立看门狗实验
- 管理视图控制器方法
- .net 讀取DataReader 返回List<T>
- wpf 3d知识点大全以及实例
- 关于ie7的兼容性问题