//伴生类
//private 修饰的构造函数,在类外部不能访问。所以不能在测试类中使用new
class Stu private (var name: String){
}
//伴生对象
object Stu {
//定义唯一对象
//privite的构造函数,在伴生对象内部可以使用!
private val instance = new Stu("小花")
def getInstance:Stu = instance
}
object TestObjectAndClass{
def main(args: Array[String]): Unit = {
//单例测试: 让Stu类只能创建一个对象
//var s = new Stu("小花")
//var s1 = new Stu("小花")
var s = Stu.getInstance
var s1 = Stu.getInstance
println(s == s1)
println(s.name)
}
}
class Student(var name: String,var gender: String,var ID: String){
}
//在伴生对象中,添加apply方法,返回伴生类的实例
object Student{
def apply(name:String, gender: String, ID: String):Student = new Student(name, gender,ID)
}
object TestApply {
def main(args: Array[String]): Unit = {
var s1 = new Student("小花","女","20241234")
//不用new也能创建对象
var s2 = Student("小花","女","20241234")
println(s2.name)
}
}
如何判断对象的所属类
方法1:对象.getClass()
方法2:对象.isInstanceof[类]
class Student(var name: String,var gender: String,var ID: String){
}
//在伴生对象中,添加apply方法,返回伴生类的实例
object Student{
def apply(name:String, gender: String, ID: String):Student = new Student(name, gender,ID)
}
object TestApply {
def main(args: Array[String]): Unit = {
var s1 = new Student("小花","女","20241234")
//不用new也能创建对象
// var s2 = Student("小花","女","20241234")
// println(s2.name)
//对象是由哪个类创建的?getClass --->爸爸是谁?
var i = 10
var str ="abc"
println(s1.getClass())
println(i.getClass())
println(str.getClass())
//对象是否是某个类创建的?
//对象.isInstanceOf[类],结果是布尔值 ---->亲子鉴定
println(s1.isInstanceOf[Student])
println(str.isInstanceOf[Student])
}
}