首页 > 其他分享 >Scala的抽象类

Scala的抽象类

时间:2024-11-06 13:45:15浏览次数:3  
标签:run val Scala var override 抽象类 def

抽象类:是一个不能被实例化的类。

           !不可以直接创建对象,而是通过子类创建对象。

  关键字:abstract

     语法:abstract class A{}

举例:

// 定义抽象类:定义标准
// 抽象类是一个特殊的类,它至少包含一个抽象方法
// 抽象方法:没有方法体,只有def和方法名
abstract class AICar(){
  // 具体属性
  var brand = "X"
  val color = "red"

  // 抽象属性:没有 =
  var hasDriver:Boolean

  // 具体方法:有 =
  def run (): Unit = {
    println("run...")
  }
  // 抽象方法
  def autoRun
}

// 定义一个子类来实现(继承)抽象类
class Model3 extends AICar{
  // 子类要实现所有的:抽象方法 + 抽象属性
  var hasDriver = false

  def autoRun(): Unit = {
    println("Model3的自动驾驶技术")
  }
  // 重写具体属性 - var 直接赋值
  brand = "TSL"
  // 重写具体属性 - val 使用override
  override val color:String = "white"

  // 重写具体方法:使用override
  override def run(): Unit = {
    println(s"Model3 run.....${color} ${brand}")
  }
}

object Test18 {
  def main(args: Array[String]): Unit = {
//    抽象类,不能new
//    new AICar()
    val m1 = new Model3()
    m1.run()
    m1.autoRun()
  }
}

标签:run,val,Scala,var,override,抽象类,def
From: https://blog.csdn.net/yuhuhuh/article/details/143568392

相关文章

  • Scala的控制方法作用域
    Scala的控制方法作用域有5种:(1)默认访问权限如果没有指定访问修饰符,成员默认是包私有的。只能在定义它们的包内访问。(2)protected访问权限修饰的成员可以被定义它们的类本身、该类的子类以及同一个包内的其他类访问。(3)private访问权限修饰的成员只能被定义它们的类本身......
  • scala学习记录,Set,Map
    set:集合,表示没有重复元素的集合,特点:唯一语法格式:val变量名=Set[类型](元素1,元素2...)可变不可变可变(mutable)可对元素进行添加,删除等操作;不可变(immutable)创建后元素不能修改如果要定义可变的Set(mutable),需要额外导入包:importscala.collection.mutableSet常见操作对于......
  • 举例说明什么情况下会更倾向于使用抽象类而不是接口
    接口和抽象类都遵循”面向接口而不是实现编码”设计原则,它可以增加代码的灵活性,可以适应不断变化的需求。接口vs抽象类 继承限制:Java中,一个类只能继承一个类,但可以实现多个接口。继承一个类意味着失去了继承其他类的机会。行为表示:接口通常用于表示附加的行为......
  • 举例说明什么情况下会更倾向于使用抽象类而不是接口
    接口和抽象类都遵循”面向接口而不是实现编码”设计原则,它可以增加代码的灵活性,可以适应不断变化的需求。接口vs抽象类 继承限制:Java中,一个类只能继承一个类,但可以实现多个接口。继承一个类意味着失去了继承其他类的机会。行为表示:接口通常用于表示附加的行为......
  • Scala Set集合
    1、Set的定义        Scala的Set分为可变和不可变,默认情况下使用不可变的集合。如果想要使用可变集合,需要导入指定的包。Set集合的特点是无序不重复。当在Set集合中添加元素时,没有重复的元素,并且不保证顺序。如果集合中有重复的元素,Set会自动去除掉重复的元素,Set集合......
  • scala中类和对象
    1.面向对象的三大特征:封装,继承,多态2.创建类和对象a.用class来创建类,用new来创建对象。创建一个Person类并创建它的对象,然后将对象打印到控制台上objectMain{ //定义类 classPerson{} defmain(args:Array[String]):Unit={  println("Heeloworld") ......
  • scala的包及其导入
    Scala的包的定义:Scala的包用于解决类的命名冲突和类的文件管理。在引入类时加上包名可以区分不同的类,解决类名冲突的问题。 Scala的包创建步骤: 1.创建包:在src上右键,新建软件包2.填写包名:小写3.在包上右键,创建类。自动加入包名4.导入:import包名.类名  导入......
  • 抽象类和接口的区别
     接口(Interface)-**定义**:使用`interface`关键字定义。-**实例化**:接口不能被直接实例化。-**实现**:一个类可以实现多个接口。-**方法**:Java8之前,接口中只能包含抽象方法(默认为`publicabstract`)。Java8之后,接口可以包含默认方法(`default`)和静态方法(`static`),并且这......
  • 抽象类和接口的区别
    接口(Interface)定义:使用​​interface​​关键字定义。实例化:接口不能被直接实例化。实现:一个类可以实现多个接口。方法:Java8之前,接口中只能包含抽象方法(默认为​​publicabstract​​)。Java8之后,接口可以包含默认方法(​​default​​)和静态方法(​​static​​),并且......
  • Scala的集合
    集合有很多种类,包括不同的接口set表示无序且不重复的集合packageqiqi//Set的特点:唯一(元素不相同)objectqqq{defmain(args:Array[String]):Unit={//valset1=Set[Int](1,2,3)//如果元素有相同的,则只保留一个!varset1=Set[Int](1,1,1,1,1)//va......