发表日期: 2022-09-24 11:40:50 浏览次数:74
书生商友信息科技专注于提供一站式建站服务,企业建站、电脑站、手机站、微信站、域名邮箱、400电话、淘宝装修、网站推广,【网站定制】网站建设推广,网络SEO优化。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)。
温州网站优化
、子类继承父类时,不能有跟父类同名的变量,除非父类中该变量为 private,或者父类中该变量为 open 并且子类用 override 关键字重写:
open class Person(var name: String, var age: Int) { open var sex: String = "unknow" init { println("基类初始化") }}// 子类的主构造方法的 name 前边也加了 var,这是不允许的,会报'name' hides member of supertype and needs 'override' modifierclass Student(var name: String, age: Int, var no: String, var score: Int) : Person(name, age) { override var sex: String = "male"}
如上代码片段中,子类 Student 主构造方法的第一个字段 name 前边加 var 关键字会报错。
2、子类不一定要调用父类和接口中共同拥有的同名的方法
引用文章中的话:“C 继承自 a() 或 b(), C 不仅可以从 A 或则 B 中继承函数,而且 C 可以继承 A()、B() 中共有的函数。此时该函数在中只有一个实现,为了消除歧义,该函数必须调用A()和B()中该函数的实现,并提供自己的实现。”
我试过了,不是必须调用 A() 和 B() 中该函数的实现,代码如下:
open class A { open fun f() { println("A") } fun a() { println("a") }}interface B { fun f() { println("B") } fun b() { println("b") }}class C : A(), B { override fun f() { // super<A>.f() // super<B>.f() println("C") }}
如上代码片段,注释掉 super<A>.f() 和 super<B>.f() 也不报错。
3、关于子类不能用 val 重写父类中的 var,我的猜测是:子类重写父类属性,也就相当于必须重写该属性的 getter 和 setter 方法,而子类中的 val 不能有 setter 方法,所以无法“覆盖”父类中 var 的 setter 方法,相当于缩小了父类中相应属性的使用范围,是不允许的,就像我们不能把父类中一个 public 方法重写成 private 方法一样。
4、如果一个变量想要在定义的时候被初始化,则该变量必须拥有 backing field 字段,该变量的默认 getter 和 setter 方法中是有定义 field 字段的,但是如果我们重写了这个变量的 getter 方法和 setter 方法,并且在 getter 方法和 setter 方法中都没有出现过 filed 这个关键字,则编译器会报错,提示 Initializer is not allowed here because this property has no backing field,除非显式写出 filed 关键字(哪怕它什么都不干,只要放在那里就可以了,我理解是出现一次就相当于“声明”过了,就可以用了,而在定义变量的时候初始化是要求 field 被“声明”过才可以):
var aaa: Int = 0get() { field // 这里必须出现一下field关键字,否则 var aaa: Int = 0 会报错,除非你去掉 = 0这部分,不要给它赋初始化值 return 0}set(value) {}
客户对我们的评价:作为网络负责人,与贵公司合作已经有8年了。贵公司服务还是非常不错的,有问题会及时解决。域名、网站、邮箱、推广服务都是他们负责的,也比较省心。网站建设
各行业案例推荐!客户由老客户介绍或自主联系我们!
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)。
备案号: 苏ICP备11067224号-5
CopyRight © 2021 通陆科技 All Right Reserved 未经许可不得复制转载
友情链接:苏州贷款 武汉殡葬服务
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.net 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
全国服务热线:400-111-6878