我想知道是否可以在伴生对象中使用类的属性。例如下面的例子:
class Person1(val name: String, var age: Int){
lateinit var surname: String
companion object myc{
var cname: String =""
var cage: Int = 0
fun constructor(cname: String, cage: Int){
this.cage = cage
this.cname = cname
}
fun changeAge(age: Int ?= 0){
// access to surname or name or age
}
}
}
Run Code Online (Sandbox Code Playgroud)
我无法访问 Person1 类的任何属性
例如,我们将类或伴生对象称为如下:
val c1 = Person1.myc.constructor("john",10)
val c2= Person1("jack",20)
Run Code Online (Sandbox Code Playgroud)
我无法通过c1或c2调用changeAge()函数。当 Person1 尚未使用正确的构造函数实例化时,我可以使用 changeAge 的唯一地方是通过 Person1.changeAge() 。我想知道这些操作是否有其他选择,或者如果没有,拥有伴随对象还有什么意义
class
与 Java 不同,在类中嵌套 a不会自动让您访问该类的实例。这同样适用于object
s,包括companion object
s。只是让您除了 之外companion
还可以引用该对象。Person1
Person1.myc
你fun constructor
不是一个构造函数;这只是一个名为 的方法 constructor
。
归档时间: |
|
查看次数: |
9761 次 |
最近记录: |