Swift—final关键字-b

在类的定义中使用final关键字声明类、属性、方法和下标。final声明的类不能被继承,final声明的属性、方法和下标不能被重写。

下面看一个示例:

[html] view plain copy

print?

  1. final class Person { //声明为final,说明它是不能被继承的
  2. var name: String
  3. final var age: Int    //定义的age属性
  4. final func description() -> String {  //定义description实例方法
  5. return "\(name) 年龄是: \(age)"
  6. }
  7. final class func printClass() ->() {  //定义printClass静态方法
  8. print( "Person 打印...")
  9. }
  10. init (name: String, age: Int) {
  11. self.name = name
  12. self.age  = age
  13. }
  14. }
  15. class Student: Person {                            //编译错误
  16. var school: String
  17. convenience init() {
  18. self.init(name: "Tony", age: 18, school: "清华大学")
  19. }
  20. init (name: String, age: Int, school: String) {
  21. self.school = school
  22. super.init(name: name, age: age)
  23. }
  24. override func description() -> String {         //编译错误    //试图重写description实例方法
  25. print("父类打印 \(super.description())")
  26. return "\(name) 年龄是: \(age), 所在学校: \(school)。"
  27. }
  28. override class func printClass() ->() {      //编译错误  //试图重写printClass静态方法
  29. print( "Student 打印...")
  30. }
  31. override var age: Int {                        //编译错误 //试图重写age属性
  32. get {
  33. return super.age
  34. }
  35. set {
  36. super.age = newValue < 8 ? 8: newValue
  37. }
  38. }
  39. }

定义Student类,并声明为Person子类时,会报如下编译错误:

Inheritance from a finalclass ‘Person‘

定义的age属性也是final,那么在试图重写age属性时,会报如下编译错误:

Var overrides a ‘final‘var

定义description实例方法,它被声明为final,那么在试图重写description实例方法时,会报如下编译错误:

Instance method overridesa ‘final‘ instance method

定义printClass静态方法,它被声明为final,那么在试图重写printClass静态方法时,会报如下编译错误:

Class method overrides a‘final‘ class method

使用final可以控制我们的类被有限地继承,特别是在开发一些商业软件时,适当地添加final限制是非常有必要的。

时间: 2024-10-09 19:44:28

Swift—final关键字-b的相关文章

Swift 2.0学习笔记(Day 47)——final关键字

原创文章,欢迎转载.转载请注明:关东升的博客 在类的定义中使用final关键字声明类.属性.方法和下标.final声明的类不能被继承,final声明的属性.方法和下标不能被重写. 下面看一个示例: final class Person { //声明为final,说明它是不能被继承的 var name: String final var age: Int //定义的age属性 final func description() -> String { //定义description实例方法 retu

《从零开始学Swift》学习笔记(Day 47)——final关键字

原创文章,欢迎转载.转载请注明:关东升的博客 在类的定义中使用final关键字声明类.属性.方法和下标.final声明的类不能被继承,final声明的属性.方法和下标不能被重写. 下面看一个示例: final class Person {//声明为final,说明它是不能被继承的          var name: String          final var age: Int    //定义的age属性          final func description() -> Stri

JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来聊聊final这个关键字 final可以修饰类,方法和变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量,只能被赋值一次 内部类只能访问被final修饰的局部变量 final,故名思意,就是最终的意思,由以上的五种特性,不过final的出现,也是有

浅析Java中的final关键字

原文出处: 海子 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字

【Java基础】final关键字总结

Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例.final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的. final关键字的含义? final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如

Java中的方法重写 与 final关键字

Java中的方法重写 与 final关键字 以下程序是否存在错误? class Base { private final void method() { System.out.println("In Base..."); } } class Sub extends Base { public void method() { System.out.println("In Sub..."); } } 答案 正确的. 使用final关键字可以声明类.成员变量和成员方法,一

转载:浅析Java中的final关键字

文章转自:http://www.cnblogs.com/dolphin0520/p/3736238.html 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cn

java中的 final关键字

a.  final的变量值不能改变b.  final的方法不能被重写c.  final的类不能被继承 1.final类        final类不能被继承,因此final类的成员方法没有机会被覆盖,不能被重写,默认都是final的.在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类. 2.final方法(不能被重写)        如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法. public class

二、Java基础之final关键字

final变量: final修饰的变量(成员变量或局部变量),即常量,只能赋值一次,不能再次修改. final成员变量要么在声明时赋值,要么在构造函数里赋值. 如果变量为引用类型,变量的引用不能修改,但是引用指向的内容是可以被修改的. final方法: final修饰的方法不能被子类重写. final类: final修饰的类不能被继承. 最典型的例子:String类.因为String是immutable的,所以不能允许其他类继承String,否则其子类会轻易的将其改为mutable.详细参考:h