Scala 面向对象-继承和多态

Scala 面向对象-继承和多态

1)基本语法
class 子类名 extends 父类名 { 类体 }
(1)子类继承父类的属性和方法
(2)scala 是单继承
2)案例实操
(1)子类继承父类的属性和方法
(2)继承的调用顺序:父类构造器->子类构造器

class Person(nameParam: String) {
 var name = nameParam
 var age: Int = _
 def this(nameParam: String, ageParam: Int) {
 this(nameParam)
 this.age = ageParam
 println("父类辅助构造器")
 }
 println("父类主构造器")
}
class Emp(nameParam: String, ageParam: Int) extends Person(nameParam, ageParam) {
 var empNo: Int = _
 def this(nameParam: String, ageParam: Int, empNoParam: Int) {
 this(nameParam, ageParam)
 this.empNo = empNoParam
 println("子类的辅助构造器")
 }
println("子类主构造器")
}
object Test {
 def main(args: Array[String]): Unit = {
 new Emp("z3", 11,1001)
 }
}

3)动态绑定
Scala 中属性和方法都是动态绑定,而 Java 中只有方法为动态绑定。
案例实操(对比 Java 与 Scala 的重写)
Scala

class Person {
 val name: String = "person"
 def hello(): Unit = {
 println("hello person")
 }
}
class Teacher extends Person {
 override val name: String = "teacher"
 override def hello(): Unit = {
 println("hello teacher")
 }
}
object Test {
 def main(args: Array[String]): Unit = {
 val teacher: Teacher = new Teacher()
 println(teacher.name)
 teacher.hello()
 val teacher1:Person = new Teacher
 println(teacher1.name)
 teacher1.hello()
 }
}

Java

class Person {
 public String name = "person";
 public void hello() {
 System.out.println("hello person");
 }
}
class Teacher extends Person {
public String name = "teacher";
 @Override
 public void hello() {
 System.out.println("hello teacher");
 }
}
public class TestDynamic {
public static void main(String[] args) {
 Teacher teacher = new Teacher();
 Person teacher1 = new Teacher();
 System.out.println(teacher.name);
 teacher.hello();
 System.out.println(teacher1.name);
 teacher1.hello();
 }
}

结果对比
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值