类的一个主要特性是可以被继承,这也是类与结构体的差别之一。继承是一种面向对象的特性,一个类可以被继承成为父类,也可以继承自某个类成为子类。子类可以从父类中继承一些特性,比如属性和方法;同时子类也可以增加新的属性和方法,以此增加新的特性。我们可以创建一个Student类,它继承自Person类,实例如下:
动手写7.3.2 ClassPractise->Student.swift
Student类中增加了className和grade方法,这样可以更详细地描述Student,并且还可以覆写Person中的info方法,所谓的覆写是指父类中已经声明实现的方法在子类中重新实现一次,代码如下:
Student类中增加了className和grade方法,这样可以更详细地描述Student,并且还可以覆写Person中的info方法,所谓的覆写是指父类中已经声明实现的方法在子类中重新实现一次,代码如下:
覆写的info方法先调用父类的info方法,再将结果与当前这个类中的信息进行拼接,生成一个全新的自我介绍。覆写时要在方法声明前再加上关键字override,在覆写的方法中调用super.info(),super表示按照父类方式访问实例;接着再调用父类中info的实现;回到main.swift中,创建一个Student对象,对其属性进行赋值,最后打印出自我介绍:
动手写7.3.3 ClassPractise->main.swift
覆写的info方法先调用父类的info方法,再将结果与当前这个类中的信息进行拼接,生成一个全新的自我介绍。覆写时要在方法声明前再加上关键字override,在覆写的方法中调用super.info(),super表示按照父类方式访问实例;接着再调用父类中info的实现;回到main.swift中,创建一个Student对象,对其属性进行赋值,最后打印出自我介绍:
动手写7.3.3 ClassPractise->main.swift
控制台输出如下:(www.xing528.com)
控制台输出如下:
成功将所有信息放入了自我介绍中。
有些场景不想让子类覆写方法,这个时候可以使用final关键字(将其放在方法声明的最前面):
成功将所有信息放入了自我介绍中。
有些场景不想让子类覆写方法,这个时候可以使用final关键字(将其放在方法声明的最前面):
这个时候再创建一个Student子类就不能再覆写info这个方法了,如果覆写,编译器就会报错。关于类的概念,我们就已经开始建立起来了。下面的小节会讲一些关于枚举、结构体和类之间共通的知识,读者可以在三者之间同时进行练习。
这个时候再创建一个Student子类就不能再覆写info这个方法了,如果覆写,编译器就会报错。关于类的概念,我们就已经开始建立起来了。下面的小节会讲一些关于枚举、结构体和类之间共通的知识,读者可以在三者之间同时进行练习。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。