1.接口
interface Livable {
val hasSkill: Boolean
}
interface ChinaLivable {
val hasJobOffer: Boolean
val visaCategory: String
get() = "工作签证"
var city: String
fun speakChinese()
fun handleGuanxi() {
println("在中国要学会处理人际关系")
}
}
open class Person {
var name =""
}
class ForigenChinese : Person(),Livable,ChinaLivable{
override val hasJobOffer: Boolean
get() = true
override var city =""
override fun speakChinese() {
println("我叫${this.city},汉语水平一级")
}
override val hasSkill: Boolean
get() = true
}
fun main(args: Array<String>) {
val tom = ForigenChinese()
tom.name = "Green"
tom.city = "Beijing"
tom.speakChinese()
tom.handleGuanxi()
println(tom.visaCategory)
println("tom有技能:${tom.hasSkill}")
}
我叫Beijing,汉语水平一级
在中国要学会处理人际关系
工作签证
tom有技能:true
2.泛型
fun main(args: Array<String>) {
println(2)
println("泛型")
val a = arrayOf(1, 2, 3)
fun <T> showText(para: T) {
println(para)
}
showText("自定义泛型")
showText(2)
val sum = arrayOf(1, 2, 3, 4, 5).sum()
println(sum)
fun <T : Number> sum(vararg numbers: T): Double {
return numbers.sumByDouble { it.toDouble() }
}
println(sum(1, 2, 3, -0.5, 5))
fun <T> biggerPart(list: Array<T>, threhold: T): List<T>
where T : Number, T : Comparable<T> {
return list.filter { it >= threhold }.sorted()
}
val b = arrayOf(1, 0, 123, -12, 11, 666)
println(biggerPart(b,11))
}
2
泛型
自定义泛型
2
15
10.5
[11, 123, 666]
3.扩展
fun Int.square(): Int {
return this * this
}
fun <T> Array<T>.biggest(): T
where T : Number, T : Comparable<T> {
var biggest = this[0]
for (i in 1..lastIndex) {
val element = this[i]
if (element > biggest) {
biggest = element;
}
}
return biggest
}
fun <T> Array<T>.smallest(): T where T : Number, T : Comparable<T> {
var smalllest = this[0]
for (i in 1..lastIndex) {
val element = this[i]
if (element < smalllest) {
smalllest = element
}
}
return smalllest
}
val Int.next: Int
get() = this + 1
val <T : Number> T.area: Double
get() = 3.1415926 * this.toDouble() * this.toDouble()
fun main(args: Array<String>) {
println(5.square())
println(2.area)
val a = arrayOf(1, 2, 3, -88)
println(a.biggest())
println(a.smallest())
println(3.next)
}
25
12.5663704
3
-88
4