interface Driver{
fun drive()
fun abc()
}
class Manager(driver:Driver):Driver by driver
class Manager(driver: Driver):Driver{
override fun drive(){
driver.drive()
}
override fun abc(){
driver.abc()
}
}
//Kotlin代码
package printlin.net
/**
* @created 2018/11/2 12:06
* @description:
* @author sunxiaxia
*/
fun main(args: Array<String>) {
val a = minOf(args[0].toInt(), args[1].toInt())
val latitude2 = Latitude.ofDouble(5.0)
val latitude = Latitude.ofLatitude(latitude2)
println(latitude.TAG)
}
class Latitude private constructor(val value: Double) {
companion object {
fun ofDouble(double: Double): Latitude {
return Latitude(double)
}
@JvmStatic
fun ofLatitude(latitude: Latitude): Latitude {
return Latitude(latitude.value)
}
}
@JvmField
val TAG:String = "Latitude"
}
//Java代码
public class JavaStatic {
public static void main(String...args){
Latitude latitude = Latitude.Companion.ofDouble(6.0);
Latitude latitude1 = Latitude.ofLatitude(latitude);
System.out.println(latitude1.TAG);
}
}
fun main(args: Array<String>) {
println("hello".multiply(3))
}
fun String.multiply(int:Int):String{
val stringBuilder = StringBuilder()
for (i in 0 until int){
stringBuilder.append(this)
}
return stringBuilder.toString()
}
//Java中调用
ExtendsKt.times("kjhfj",7);
属性代理
//定义方法
val/var name:Type by expression
代理者需要实现相应的setValue/getValue方法
lazy原理剖析
数据类(Data clas,再见JavaBean)
默认实现的copy、toString等方法
componentN方法 ,可以自己写
val (a,b,c) = dataClass实例
例:
val person = Person("张丹",35)
val (a,b) = person
println("姓名:$a,年龄:$b")