声 明
本教程仅用于初学SWIFT同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用SWIFT版本为2.0。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。PAEA.CN版权所有。
欢迎回到和屌丝一起学SWIFT系列教程,上节我们说了下标脚本,这节我们来一起学习一个重要的东西-继承.继承是面向对象开发中的一种很常见的功能,继承的存在扩展了类在使用中的功能性,使得类变的更为的好用,更加的灵活.
继承
继承是代码复用及管理的一大亮点,他出现在几乎所有面向对象的语言中,在SWIFT中,一个类可以继承另一个类的所有,被继承的类叫做超类或父类,继承的类叫做子类.另外在SWIFT中,仅有类支持继承.
[基类]
基类不是搞基的类,而是基础的类.在SWIFT中,不继承其他类的类就叫做基类.
[子类]
继承其他类的类就是子类,可以直接理解为他是其他类的孩子,因为其他类有的东西他都有,这个过程就叫做继承.继承使用 冒号(:) 来定义.
class Ren{
var name:String?;
var age:Int?;
var sex:String?;
}
这里我们先定一个基类-Ren,然后我们创建个子类,NanRen
class NanRen:Ren{}
var ren=NanRen();
ren.age=10;
print(ren.age);
//输出"10"
这里我们可以看出,NanRen类没有定义任何东西,就可以使用和Ren类一样的属性.但是如果仅仅是这样,继承就会失去意义.继承之后,我们还要为子类添加新的属性才能让继承发挥作用.
class HaoRen:Ren{
var say="我是好人别杀我.";
}
class HuaiRen:Ren{
func do1(){
print("kill you");
}
}
var haoren=HaoRen();
var huairen=HuaiRen();
print(haoren.say); //输出"我是好人别杀我."
huairen.do1(); //输出"kill you"
这里我们看到,我们创建了2个子类,他们都有父类Ren的属性,同时他们还有这自己独特的属性和方法.这就是继承的精华.
[重写]
如果子类继承了父类一些东西,但是子类觉得父类的这些基因不好,他要修改为自己想要的方式,这个过程叫做重写.我们使用关键字 override 来重写父类的基因.如果你的父类的属性中有不想被他的子类重写的,需要用关键字 final 来修饰.
class Gou{
var say="wang";
func eat(){
print("吃骨头");
}
}
class XiaoGou:Gou{
override var say:String{
get{
return "123";
}
set{
}
}
override func eat(){
print("不吃骨头");
}
}
var x=XiaoGou();
print(x.say); //输出"123"
x.eat(); //输出"不吃骨头"