Scala中的抽象类

简介:

抽象类

抽象类中不一定有抽象方法或者抽象字段。

有抽象字段或者抽象方法的类一定是抽象类。

子类在实现抽象字段或者抽象方法的时候,不使用override。

覆盖方法

覆盖的时候,一定使用override。

覆盖字段 
抽象字段一定要有类型描述。 覆盖的时候,一定使用override。

复制代码
 1 /**
 2  * 继承 -- 抽象类
 3  * @author Administrator
 4  */
 5 abstract class person{
 6   var name:String
 7   val age:Int
 8   def show:Int
 9 }
10 
11 class student extends person {
12   //在scala中覆盖一个抽象类中字段时,可以不写override
13   var name:String = "zhangsan"  //使用var定义的抽象字段只能使用var覆盖
14   val age:Int = 18  //使用val定义的抽象字段只能使用val覆盖
15   def show:Int = 100  //使用def定义的方法可以使用val或者def进行覆盖
16 }
17 
18 object TestScala61 {
19   def main(args: Array[String]): Unit = {
20     /*
21     1、抽象类不一定有抽象字段,只需要添加abstract关键字
22     2、有抽象字段一定是抽象类
23     3、重写字段的实质是在重写字段的setter、getter方法
24     */
25     var c = new student
26     println(c.show)
27   }
28 }
复制代码

 

复制代码
 1 /**
 2  * 继承-构造顺序
 3  * @author Administrator
 4  */
 5 class person1{
 6   val name:String = "lisi"
 7   val age:Int = 10 
 8   lazy val interest:Array[Int] = new Array[Int](age)
 9   println("person1类")
10 }
11 
12 class student1 extends person1{
13   override val age:Int = 20
14   println("student1类")
15 }
16 
17 
18 object TestScala62 {
19   def main(args: Array[String]): Unit = {
20     val c = new student1
21     println(c.name)//打印"lisi"
22     println(c.age)//打印20
23     println(c.interest.length)
24     
25     /*说明*/
26     //1、实例化student1类时,发现student1继承了person1
27     //2、继承person1优先调用person1初始化person1中的字段
28     //3、初始化到age时发现age字段要被student1中age重写,setter、getter方法为空
29     //4、初始化interest时需要调用age字段的getter方法,用于初始化数组,由于getter方法没有定义,所以长度为0
30     //5、student1类开始进行初始化,将20设置进age字段
31     
32     //解决方法:在interest前添加lazy--使得该字段在构造对象的最后在进行初始化
33     
34   }
35   
36 }
复制代码

 打印输出:

复制代码
person1类
student1类
lisi
20
20
复制代码

先打印出父类"person1"然后打印出子类"student1"


本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5673260.html,如需转载请自行联系原作者

相关文章
|
4月前
|
分布式计算 Java Scala
Scala:面向对象、Object、抽象类、内部类、特质Trait(二)
Scala:面向对象、Object、抽象类、内部类、特质Trait(二)
63 0
|
Java Scala
Scala学习笔记(五) 抽象类以及类中的一些语法糖
Scala学习笔记(五) 抽象类以及类中的一些语法糖
134 1
|
Scala
SCALA中的抽象类代码样例
package com.hengheng.scala class AbstractClass { } abstract class People { def speak val name : String var age : Int } class W...
711 0
|
SQL 消息中间件 分布式计算
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
670 0
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
|
2月前
|
分布式计算 Java Scala
spark 与 scala 的对应版本查看、在idea中maven版本不要选择17,弄了好久,换成11就可以啦
spark 与 scala 的对应版本查看、.在idea中maven版本不要选择17,弄了好久,换成11就可以啦
105 2
|
2月前
|
分布式计算 数据处理 Scala
Spark 集群和 Scala 编程语言的关系
Spark 集群和 Scala 编程语言的关系
29 0
|
3月前
|
分布式计算 Java Scala
Spark编程语言选择:Scala、Java和Python
Spark编程语言选择:Scala、Java和Python
Spark编程语言选择:Scala、Java和Python
|
11月前
|
存储 分布式计算 Scala
Spark-RDD 键值对的操作(Scala版)
Spark-RDD 键值对的操作(Scala版)
|
11月前
|
SQL 存储 JSON
人人都懂Spark-SQL基础操作(Scala版)
人人都懂Spark-SQL基础操作(Scala版)