1. 匿名内部类:
interface TestObject{
fun getTest():String
}
fun main(args: Array<String>) {
val testObject = object :TestObject{
override fun getTest(): String {
return "执行了getTest"
}
}
System.out.println(testObject.getTest())
}
执行了getTest
2. 超类型:
open class SetTest{
fun setTest(){
System.out.println("执行了setTest\n")
}
}
interface GetTest{
fun getTest():String
}
var getAndSet:SetTest = object:SetTest(),GetTest{
override fun getTest(): String {
return "执行了getTest\n"
}
}
fun main(args: Array<String>) {
System.out.println((getAndSet as GetTest).getTest())
getAndSet.setTest()
}
执行了getTest
执行了setTest
3. 无类型:(只能在方法内部使用)
fun main(args: Array<String>) {
val test = object{
val a = "a"
val b = "b"
}
System.out.println(test.a+ test.b)
}
ab
4. 修饰函数:(只能修饰私有函数)
private fun getTest() = object {
val a = "a"
val b = "b"
}
fun main(args: Array<String>) {
System.out.println(getTest().a+ getTest().b)
}
ab
5. 修饰类:被object修饰的类为单例模式
object SetTest{
var number = 0
fun setAdd(){
number++
}
}
fun main(args: Array<String>) {
for(i in 1..100){
SetTest.setAdd()
}
System.out.println("结果为${SetTest.number}")
}
结果为100
6. 伴生对象:伴生对象为单例,原对象没影响。
class SetTest{
companion object GetTest{
var number = 0
fun setAdd(){
number++
}
}
var numbers = 0
fun setAdds(){
numbers++
}
}
fun main(args: Array<String>) {
for(i in 1..100){
SetTest.setAdd()
SetTest().setAdds()
}
System.out.println("结果为${SetTest.number}\n")
System.out.println("结果为${SetTest().numbers}\n")
}
结果为100
结果为0