定义抽象
定义:抽象类是一个包含一个或多个抽象方法的类。抽象方法是不带任何实现的方法。抽象类也可以包含具体的方法和属性。
目的:抽象类的主要目的是为子类提供公共的接口和部分实现,并确保子类实现抽象方法。
package level2
object Sc75 {
abstract class DreamJob {
var money:Double // 只有属性名,没有具体的值。
var vacation:Int
var boss:String
}
// 子类:具体类
class PE extends DreamJob {
var money: Double = 14500
var vacation: Int = 4
var boss: String = "无人"
}
def main(args: Array[String]): Unit = {
// new DreamJob() // 报错
val pe1 = new PE()
println(pe1.money)
}
}
定义抽象类
package level2
object Sc76 {
abstract class DreamJob {
// 抽象属性
var money: Double // 只有属性名,没有具体的值。
var vacation: Int
var boss: String
var name: String = "理想工作"
// 抽象方法:没有写{},就是一个抽象的方法,它需要在子类中去实现
def addMoney(): Unit
// 具体方法
def getMoney(): Unit = {
println(s"工资:${money}元")
}
}
// 子类:具体类
class PE extends DreamJob {
var money: Double = 14500
var vacation: Int = 4
var boss: String = "无人"
def addMoney(): Unit = {
money *= 1.1
}
}
def main(args: Array[String]): Unit = {
// new DreamJob() // 报错
val pe1 = new PE()
pe1.addMoney()
pe1.getMoney()
}
}
继承抽象类
package level2
object Sc76 {
abstract class DreamJob {
// 抽象属性
var money: Double // 只有属性名,没有具体的值。
var vacation: Int
var boss: String
var name: String = "理想工作"
// 抽象方法:没有写{},就是一个抽象的方法,它需要在子类中去实现
def addMoney(): Unit
// 具体方法
def getMoney(): Unit = {
println(s"发工资:${money}元")
}
}
// 子类:具体类
class PE extends DreamJob {
var money: Double = 14500
var vacation: Int = 4
var boss: String = "无人"
def addMoney(): Unit = {
money *= 1.1
}
override def getMoney(): Unit = {
println(s"上银行卡:${money}元")
}
}
def main(args: Array[String]): Unit = {
// new DreamJob() // 报错
val pe1 = new PE()
pe1.addMoney()
pe1.getMoney()
}
}
抽象类重写
package level2
object Sc77 {
class C1 {
class B1 {
def say(): Unit = {
println("B1......")
}
}
}
def main(args: Array[String]): Unit = {
// 1. 创建一个C1的对象
val c1 = new C1()
// 2. 创建一个B1的对象
val b1 = new c1.B1()
b1.say()
}
}