- 类和对象(一个类 Class,多个对象)
- new 创造对象,new XXXX ()
- 构造函数,构造器
- 辅助构造器 this
- private, override, toString, equals, this
- apply 单例模式
- 伴生类 伴生对象
- 多个类之间的关系:继承
好处:不劳而获。
重写:子类对父类的同名方法进行重写!
父类和子类的构造器调用顺序
package level02
object Class12 {
class Boss {
def power(): Unit = {
println("Boss 有权力.....")
}
var car = "豪车"
}
// 子类 继承 父类
class NoBody extends Boss {
}
def main(args: Array[String]): Unit = {
val b = new NoBody()
println(b.car)
b.power()
}
}
override
重写:子类对父类的同名方法进行重写
package level02
object Class13 {
class Boss {
def test(): Unit = {}
def power(): Unit = {
println("Boss 有权力.....")
}
var car = "豪车"
}
// 子类 继承 父类
class NoBody extends Boss {
// 子类自己的方法,与父类的方法不同名
def run(): Unit = {
}
override def power(): Unit = {
println("老莫,我想吃鱼了")
}
}
def main(args: Array[String]): Unit = {
val b = new NoBody()
println(b.car)
b.power()
b.run()
}
}
package level02
object Class14 {
class Father() {
println("Father 构造器被调用")
}
class Son extends Father() {
println("Son 构造器被调用")
}
def main(args: Array[String]): Unit = {
// new Father()
new Son()
}
}
package level02
object Class15 {
// 父类
class Dog(var name: String, var age: Int) {
println(s"Dog ${name}, ${age} 构造器被调用")
}
// 子类 中华田园犬
// 子类带参构造器
// 1. 继承父类的属性。不用写 val, var 修饰符
// 2.自己的新属性,加上var,val修饰符
// 父类构造器
// 直接传入参数,不用写属性的类型
class RuralDog(name: String, age: Int, var color:String) extends Dog(name, age) {
println("RuralDog 的构造器...")
}
def main(args: Array[String]): Unit = {
new RuralDog("旺财", 3, "土黄色")
}
}