MainActivity.kt
package com.example.a02handler
import android.os.Bundle
import android.os.Handler
import android.os.Message
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import java.lang.ref.WeakReference
import java.math.BigInteger
import java.util.*
class MainActivity : AppCompatActivity() {
private lateinit var show: ImageView
enum class week{
星期一,星期二,星期三,星期四,星期五,星期六,星期日
}
class MyHandler(private val activity: WeakReference<MainActivity>) : Handler(){
private var imageIds = intArrayOf(R.drawable.java, R.drawable.javaee, R.drawable.ajax, R.drawable.android,
R.drawable.swift)
private var currentImageId = 0
override fun handleMessage(msg: Message) {
if (msg.what == 0x1211){
activity.get()?.show?.setImageResource(
imageIds[currentImageId++ % imageIds.size]
)
}
}
}
val myHandler = MyHandler(WeakReference(this))
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// var result = add(3, 5)
// test()//函数
// test1()//类
// test2()//继承
test3(); //抽象方法
// test4();
show = findViewById(R.id.show);
Timer().schedule(object : TimerTask(){
override fun run() {
myHandler.sendEmptyMessage(0x1211)
}
}, 0, 1200)
}
fun test4() {
var intman = IntMan()
println(week.星期二.ordinal)
}
/**
* 抽象方法
*/
fun test3() {
var man = Man("男人")
man.eat()
man.pee()
var man2 = Man("男人2")
man2.eat()
man2.pee()
var man3 = Man("男人3")
man3.eat()
man3.pee()
var woman = Wonman("女人")
woman.eat()
woman.pee()
var woman2 = Wonman("女人2")
woman2.eat()
woman2.pee()
var woman3 = Wonman("女人3")
woman3.eat()
woman3.pee()
var humList = listOf<Human>(man, man2, man3, woman, woman2, woman3)
for (h in humList) {
h.pee()
}
}
/**
* 继承
*/
fun test2() {
var son = Son()
println("son's charator ${son.chactor}")
son.action()
}
/**
* 对象
*/
fun test1() {
var result = fact(BigInteger("100"))
var react = React(20, 10)
println("gao===:${react.height}")
println("kuan===:${react.width}")
react.closeDoor()
react.selecteMode(1)
react.start()
// println("result=====" + result)
}
private fun fact(num:BigInteger):BigInteger{
return if (num == BigInteger.ONE) {
BigInteger.ONE
} else{
num*fact(num - BigInteger.ONE)
}
}
private fun add(a: Int, y: Int) : Int = a + y
private fun test() {
val a: Int = 10000
println("???" + (a === a)) // true,值相等,对象地址相等
//经过了装箱,创建了两个不同的对象
val boxedA: Int? = a
val anotherBoxedA: Int? = a
//虽然经过了装箱,但是值是相等的,都是10000
println(boxedA === anotherBoxedA) // false,值相等,对象地址不一样
println(boxedA == anotherBoxedA) // true,值相等
}
}
Main.kt
package com.example.a02handler
class Man(name: String): Human(name){
override fun eat() {
println("${name} this is man eat for food")
}
override fun pee() {
println("${name}man is pee")
}
}
Woman.kt
package com.example.a02handler
class Wonman(name: String) :Human(name) {
override fun eat() {
println("${name} this is woman is eating foof")
}
override fun pee() {
println("${name} wonman pee====")
}
}
Human.kt
package com.example.a02handler
abstract class Human (var name:String){
abstract fun eat()
abstract fun pee()
}
输出:
I/System.out: 男人 this is man eat for food
男人man is pee
男人2 this is man eat for food
男人2man is pee
男人3 this is man eat for food
男人3man is pee
女人 this is woman is eating foof
女人 wonman pee====
女人2 this is woman is eating foof
女人2 wonman pee====
女人3 this is woman is eating foof
女人3 wonman pee====
I/System.out: 男人man is pee
男人2man is pee
男人3man is pee
女人 wonman pee====
女人2 wonman pee====
女人3 wonman pee====