1. 关键字Object
这个关键字在kotlin中用以修饰类,在声明类的同时直接就给我们创建了这个类的一个实例,
而我们在访问这个类的时候就可以直接通过类名,
例如:
object Publisher {
val name:String = "my username"
}
fun main() {
val publisher: Publisher = Publisher
println(publisher.name)
}
2、伴生对象
和java相比,Kotlin本身不支持static关键字,作为替代方案,kotlin提供了伴生对象的概念
在类中定义一个用特殊关键字标记的对象: companion, companion修饰的对象,使得外部可以直接通过companion容器类来访问这个对象(companion object) 的属性和方法,就像java中对静态防范和静态成员的访问形式,
class Publisher{
companion object {
const val name: String = " my usernaem"
}
}
fun main(){
val publisher : Publisher = Publisher()
println(Publisher.name)
}
想这样,Factory对象的创建依然是跟创建普通对象一样,在对name成员的访问的形式使用的是类名.XXX方式访问,
伴生对象实现接口
interface doPublish(){
fun dispatchMessage(str: String)
}
class Center private constructor(val name: String) {
companion object dispatchProxy :doPublish {
override fun dispatchMessage(str : String) {
.......
}
}
在调用的时候,可以直接使用Center.doPublish()方式来调用, 类名.xxxx()
对象表达式
对象表达式就是改变写法的匿名内部类
例如:
View.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
}
}
kotlin的写法
view.setOnClickListener(
object: OnClickListener{
//ToDO
}
}
工厂方法
abstract class Product {
abstract void print() ; }
class ConcreteProductA : Product {
override fun Product factoryMethod() {
println("");
}}
class ConcreteProductB : Product {
override fun print() {
println();
} }