14.Scala抽象类

Scala抽象类

Scala中有抽象类,抽象类里面有抽象属性和抽象方法

声明Scala抽象类

声明抽象类使用abstract关键字,在抽象类中,可以声明抽象方法和普通方法

// 声明抽象类:声明类时在class前使用关键字abstract
// 声明抽象方法
abstract class Parent13(){

    // 声明普通方法
    def test()={

    }

    // 只要方法声明不完整,那么就是抽象的,所以不需要使用abstract关键字了
    def test1():Unit

}

抽象方法

只要方法声明不完整,那么就是抽象的,所以不需要使用abstract关键字了

object Scala_11Object6 {
    def main(args: Array[String]): Unit = {


    }
}

// 声明抽象类:声明类时在class前使用关键字abstract
// 声明抽象方法
abstract class Parent13(){

    // 声明普通方法
    def test()={

    }

    // 只要方法声明不完整,那么就是抽象的,所以不需要使用abstract关键字了
    def test1():Unit

}
//子类如果继承抽象类,那么必须重写抽象方法或声明为抽象类
// Scala中重写分为两种情况,
// >>抽象方法的重写:只要将方法补充完整就可以,不用增加任何的修饰符
// >>>完整方法的重写:为了明确方法是用于重写,所以需要增加修饰符
class User13 ()  extends Parent13 {

    override def test(): Unit = {

    }

    // 将抽象方法补充完整
    override def test1(): Unit = {

    }

}

抽象属性

只有声明没有初始化的属性都是抽象属性,通过反编译工具可以看到,本质是没有age这个属性,但是又抽象的set和get方法,

class Scala_12Abstract {
    def main(args: Array[String]): Unit = {

    }
}


abstract class Parent12{
    // 完整属性
    var name : String = _
    // 抽象属性:具有声明,没有初始化
    // 本质没有age这个属性,但是有抽象的set和get方法,但是都是抽象的
    val age :Int
    // var age : Int

}

class User12( ) extends Parent12{
    // 如果将父类完整的内容进行重写,必须使用override关键字

    //override var name :String= ""
    // 将抽象属性补充完整
    // 和继承父类没有任何区别
    // 可变的变量不能被重写?(假设可以被重写,会由于set,get的动态绑定导致有歧义。)
    override val age: Int = 20


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值