1.コンセプト
オブジェクトの宣言は使用シングルトンを作成するために設計されています。
構文:
object ObjectName : [0-N个父类型] {
//对象声明类体
}
2.特徴(比較対象式)
- オブジェクト表現は---ステートメントを割り当てるために使用することができるオブジェクトはない割り当てのために、発現されないが、式です。
- 式には、内部オブジェクトクラスを含めることができますが、入れ子になったクラス宣言は、オブジェクト---ネストされたクラスを含めることができます含めることはできませんが、内部クラスを含めることはできません。
- 排他的な発現は、---宣言されたオブジェクトは、メソッド/関数で定義することができない(すなわち、メソッド/関数で定義された)ローカル変数として定義することができます。
- オブジェクトが名前を持っているので、オブジェクトの表現は---オブジェクト式変数宣言文でオブジェクトへのアクセスを必要とするので、あなたは、オブジェクトの宣言の名前から直接オブジェクトにアクセスすることができます。
3.オブジェクトの宣言を定義します。
fun main() {
println(Badminton.name)//羽毛球
println(Running.name)//短跑
Running.playRules()//在跑道上比赛
println(Basketball.name)//篮球
println(Basketball.isBelongSports)//true
Basketball.playRules()//在篮球场比赛
println(Basketball.FamousPlayers(ArrayList(listOf("乔丹", "科比", "詹姆斯"))).players)//[乔丹, 科比, 詹姆斯]
}
/**
* 定义一个运动接口
*/
interface Sports {
val name: String
}
/**
* 定义一个球类抽象类
*/
abstract class Ball(val isBelongSports: Boolean) {
abstract fun playRules()
}
object Badminton : Sports {
override val name: String
get() = "羽毛球"
}
object Running {
val name: String
init {
name = "短跑"
}
fun playRules() {
println("在跑道上比赛")
}
}
object Basketball : Ball(true), Sports {
override val name: String
get() = "篮球"
override fun playRules() {
println("在篮球场比赛")
}
/**
* 可以定义嵌套类,但不能定义内部类
*/
class FamousPlayers(val players: ArrayList<String>)
}
4.シングルトンオブジェクト宣言と
オブジェクト宣言は、オブジェクトのオブジェクトの宣言を定義するために、単一ケース・モデルを作成するように設計されたオブジェクトの宣言は、クラスの唯一のインスタンスを直接オブジェクトにアクセスする名前でインスタンス化することが可能です。
fun main() {
println(Singleton.name)//勒布朗詹姆斯
Singleton.name = "科比布莱恩特"
println(Singleton.name)//科比布莱恩特
}
object Singleton {
var name = "勒布朗詹姆斯"
}