在kotlin中的构造函数内部调用乐趣

时间:2018-04-17 23:38:57

标签: kotlin

大家好我是Koltin的新手,在java中我们可以做到这一点

class A{
   int x;
   int y;
   A(int x, int y){
    this.x=x;
     this.y=y
   }
}

class B extends A{  
    int x,y;   
    B(int a, int b){
        super(x,getSum(x,y));
     }
   int getSum(int x, int y){
       return x+y;
    }
}

如何在Kotlin中执行此代码,谢谢您的帮助

3 个答案:

答案 0 :(得分:1)

在Kotlin中,您使用init块或辅助构造函数。

class ExampleOne(val myProperty: Int) {
    init {
        // insert code here
    }
}

class ExampleTwo {
    constructor(myParameter: Int) {
        // insert code here
    }
}

Documentation

答案 1 :(得分:0)

使用IntelliJ IDE' 将Java文件转换为Kotlin文件功能,这里是相应的kotlin文件。

test.kt:

internal class A(var x: Int, var y: Int)

internal class B(a: Int, b: Int) : A(x, getSum(x, y)) {
    var x: Int = 0
    var y: Int = 0
    fun getSum(x: Int, y: Int): Int {
        return x + y
    }
}

答案 2 :(得分:0)

这不是有效的Java代码,因为在getSum中调用super之前无法调用super(x,getSum(x,y));。这不会编译。

在Kotlin中提供这种行为的最简单方法如下:

open class A(val a: Int, val b: Int)

class B(a: Int, b: Int) : A(a, a + b)