抽象类

26 阅读1分钟
package level02
//抽象类
//1 有关键字abstract
//2 有抽象成员:只有属性名,没有具体值,没有等号
//3 不能被new
//4 作用:给其他子类立一个标准
object Class17 {
//抽象类
  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 = {
    val pe1 =new PE()
    pe1.addMoney()
    pe1.getMoney()
  }
}
package level02
//内部类:在类的内部,在写另一个类
class Class18 {
  class C1 {
    class B1 {
      def say():Unit = {
        println("B1.....")
      }
    }
  }

  def main(args: Array[String]): Unit = {
    //创建一个c1对象
    val c1 = new C1()
    //创建一个B1对象
    val b1 = new c1.B1()
    b1.say()
  }
}