一.定义
- 有关键字,abstract
- 有抽象成员。只有属性名,没有具体的值,没有等号。
- 不能被new
- 有具体成员
- 子类要实现所有的抽象成员!!!
- 如果要重写父类具体成员,使用override
- 作用:给其他的子类立一个标准
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 = {
val pe1 = new PE()
println(pe1.money)
}
}
二.抽象类
(一).以下内容要在抽象类里面
var name: String = "理想工作"
def addMoney(): Unit
def getMoney(): Unit = {
println(s"发工资:${money}元")
}
}
(二).如果要重写父类具体成员,使用override
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 = {
val pe1 = new PE()
pe1.addMoney()
pe1.getMoney()
}
}

三.内部类
- 定义:在类的内部写另一个类
- 作用:整理代码,访问私有成员
- 注意:私有成员,不能在类的外部修改
class C1 {
class B1 {
def say():Unit = {
println("B1........")
}
}
}
def main(args: Array[String]): Unit = {
val c1 = new C1()
val b1 = new c1.B1()
b1.say()
}
}
class C1 {
//私有成员,不能在类的外部修改
private var score:Int = 85
class B1 {
def addScore(s:Int):Unit = {
score += s
}
def say():Unit = {
println("B1........")
}
}