抽象类

7 阅读1分钟

1.理解抽象类

/*
*
*抽象类
*   1.有关键字abstract
*   2.有抽象成员,只有属性名,没有具体的值,没有等号
*   3.不能被new
*   4.作用:给其他的子类立一个标准
*
 */


object Class16 {

  //抽象类
  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)

    }
  }

2.继承抽象类

/*
*
*抽象类
*   1.有关键字abstract
*   2.有
*       1.抽象成员,只有属性名,没有具体的值,没有等号
*       2.具体成员
* 
*   3.子类要实现所有的抽象成员
*
*
 */


object Class16 {

  //抽象类
  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()

    }
  }

3.抽象类重写

/*
*
*抽象类
*   1.有关键字abstract
*   2.有
*       1.抽象成员,只有属性名,没有具体的值,没有等号
*       2.具体成员
*
*   3.子类要实现所有的抽象成员
*      如果要重写父类具体成员,使用override
*
 */


object Class16 {

  //抽象类
  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()

    }
  }