abstract: 抽象
抽象属性:只有属性名,没有具体的值。
- 有关键字 abstract
- 有抽象成员。只有属性名,没有具体的值 没有 等号 。
- 不能被new 抽象类。
- 作用:给其他的子类立一个标准!
object Class18 {
// 抽象类
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)
}
}
object Class19 {
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 = 4500.0
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()
}
}
抽象类:
- 有关键字 abstract
- 有。
- 抽象成员。只有属性名,没有具体的值 没有 等号 。
- 具体成员。
- 子类要实现所有的抽象成员!
如果要重写父类具体成员:使用override
内部类:在类的内部,写另一个类
object class08 {
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()
}
}