首页 > 其他分享 >Scala的继承(不劳而获)

Scala的继承(不劳而获)

时间:2024-10-21 15:20:58浏览次数:8  
标签:不劳而获 run Scala 继承 子类 leg var new 父类

Scala中继承的定义为在原有类的基础上定义一个新类,原有类称为父类,新类称为子类 

定义:在原有的基础上定义一个新类,原有类称为父类,新类称为子类。

class 子类名 extends 父类名  { 类体 }

【问】当子类从父类继承的方法不能满足需要时,子类需要有自己的行为,怎么办?

此时使用override可以重写父类方法。

class Aniaml(){
  var leg=4
  def run():Unit={
    println("animal run......")
  }
}
//继承,不劳而获
class Dog extends Aniaml(){
  leg=3//对于var修饰的父类的属性,可以直接覆盖

  //用override重写(覆盖)父类的同名的方法
  override def run():Unit={
    println(s"${leg}条腿的Dog run......")
  }
}
object aaa {
  def main(args: Array[String]): Unit = {
    //实例化一个对象:new一个对象
//    var a1=new Aniaml()
    //a1.run()

    var d1=new Dog()
    d1.run()
  }
}

 先执行父类构造器,再执行子类构造器。

class Aniaml(var name:String,var age:Int){
  println(s"父类-构造器Animal正在运行...${name} ${age}")
  var leg=4
  def run():Unit={
    println("animal run......")
  }
}
//继承,不劳而获
class Dog(name:String,age:Int) extends Aniaml(name,age){
  println(s"子类-构造器Animal正在运行...${name} ${age}")
  leg=3//对于var修饰的父类的属性,可以直接覆盖

  //用override重写(覆盖)父类的同名的方法
  override def run():Unit={
    println(s"${leg}条腿的Dog run......")
  }
}
object aaa {
  def main(args: Array[String]): Unit = {
    //实例化一个对象:new一个对象
//    var a1=new Aniaml()
    //a1.run()

    var d1=new Dog("小黑",1)
//    d1.run()
  }
}

 

标签:不劳而获,run,Scala,继承,子类,leg,var,new,父类
From: https://blog.csdn.net/Betty_at/article/details/142986188

相关文章

  • Scala的多态
     从编译的角度解释Scala的多态含义:在执行期间而非编译期间确定所引用对象的类型,根据实际类型调用其方法。一个编译型语言有两种类型,分别为编译类型和运行类型。程序中定义的引用变量所指向的具体类型和通过该变量发出的方法调用在编译时不确定,而是在程序运行期间才确定的。cl......
  • Scala的sortedWith
    sortedWith:基于函数的排序,通过一个comparator函数,实现自定义排序的逻辑。sortWith方法:它使用传入的比较函数对集合进行排序。在排序过程中,根据比较函数的返回值来决定元素的顺序。如果比较函数返回true,则表示第一个参数应该排在第二个参数之前;如果返回false,则表示第一个参......
  • Scala的抽象类
    1.定义:抽象类是一个不能被实例化的类。无论在Scala中还是Java中都不可以直接创建对象,抽象类通过子类创建对象。//抽象类:制定标准,不要求去具体实现//abstract:抽象abstractclassAICar(){varbrand=""//自动驾驶:不要去具体实现功能defautoRun}//抽象类......
  • Scala的内部类
    Scala的内部类是指定义在类或对象内部的类classCar{privatevarspeed=0//私有属性varcolor="black"defrun():Unit={println(s"runwith${speed}")}//内部类:写在类里面的类//1.定义一个类class......
  • 【Java SE 】继承 与 多态 详解
     ......
  • 14.java面向对象:继承
    继承继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。extands的意思是“扩展”。子类是父类的扩展。JAVA中类只有单继承,没有多继承!继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。继承关系的俩个类,一个为子类(派生类),一......
  • Scala继承和多态
    //定义一个类classAnimal(){println("父类Animal的构造器被调用")varlegs=4defsay():Unit={println("Animalsay....")}defrun():Unit={println("Animalrun....")}}//定义一个子类Dog,继承自父类Animal//继承的好处:(1)不劳而获cla......
  • Java继承机制深度解析:细探private与protected权限控制
    private和protected是Java中的两种访问修饰符,用于控制类成员(字段和方法)的访问权限。它们在设计类和实现封装、继承多态性方面具有重要作用。下面详细说明它们的区别和含义。1.private修饰符含义:被private修饰的成员(字段或方法)只能在定义它们的类内部访问。其他......
  • C++——继承
    1.概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数......
  • Scala中reduce函数
    reduce()方法是一个高阶函数,它接受集合中的所有元素(数组,列表等),并使用二进制运算将它们组合以产生单个值。必须确保运算是可交换的和关联的。匿名函数作为参数传递给reduce函数。reduce作用:是一种集合操作,用于对集合中的元素进行聚合操作,返回一个单一的结果。它通过指定的......