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,如需转载请自行联系原作者

相关文章
|
6月前
|
分布式计算 Java Scala
Scala:面向对象、Object、抽象类、内部类、特质Trait(二)
Scala:面向对象、Object、抽象类、内部类、特质Trait(二)
91 0
|
Java Scala
Scala学习笔记(五) 抽象类以及类中的一些语法糖
Scala学习笔记(五) 抽象类以及类中的一些语法糖
163 1
|
Scala
SCALA中的抽象类代码样例
package com.hengheng.scala class AbstractClass { } abstract class People { def speak val name : String var age : Int } class W...
726 0
|
1月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
49 5
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
48 3
|
1月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
38 0
|
1月前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
75 0
|
1月前
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
20 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
1月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
33 0
|
1月前
|
缓存 分布式计算 大数据
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(一)
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(一)
40 0