package cn.tedu.objectx
object Singleton {
def main(args: Array[String]): Unit = {
var a: A = A.getInstance
var b: B = B.getInstance
}
}
// 单例
// 在Scala中,如果需要定义单例利用伴生对象来定义
// 懒汉式
class A private () {}
object A {
private var a: A = _
def getInstance = {
if (a == null)
a = new A
a
}
}
// 饿汉式
class B private () {}
object B {
private var b: B = new B
def getInstance = b
}
抽象类
package cn.tedu.objectx
object AbstractDemo {
def main(args: Array[String]): Unit = {
import abst._
var p = new Pet {}
}
}
package abst {
abstract class Pet {}
abstract class Animal {
def sleep = println("sleeping~~~")
// def eat(): Unit
def eat
}
class Dog extends Animal {
override def eat = println("eating~~~")
}
}
伴生对象
package cn.tedu.objectx
import scala.beans.BeanProperty
// 用object定义的结构称之为伴生对象
object PersonDemo {
def main(args: Array[String]): Unit = {
var p = new Person
// println(p.name)
// p.name = "Amy"
// p.age = -15
println(p.getName)
}
}
class Person {
// 在Scala中,要求变量在定义的时候必须初始化
// 在Scala中,不建议属性值给null
// _不表示值,而是在初始化这个对象的时候系统会给name一个默认值
// 在Scala中,如果不指定,权限修饰符默认是public
@BeanProperty var name: String = _
@BeanProperty var age: Int = _
def eat = println(“吃饭~~~”)
}