大数据全系列 教程
1869个小节阅读:468k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
package com.itbaizhan.chapter05
import scala.beans.BeanProperty
//抽象属性
object AbstractField {
def main(args: Array[String]): Unit = {
}
//TODO 2.包含抽象属性的类必须定义为抽象类
abstract class Animal{
//TODO 1.抽象属性定义:只有声明,没有显示初始化的属性
@BeanProperty var name:String
//TODO3. 运行程序并查看源码发现,编译时不会在类中声明属性,只会声明对应的get和set方法,这是方法也是抽象的
/*public abstract String name();
public abstract void name_$eq(final String x$1);
public abstract String getName();
public abstract void setName(final String x$1);*/
}
class Cat extends Animal{
//TODO 4.非抽象的子类中必须要为抽象属性显示的初始化
//@BeanProperty var name:String = "波斯猫"
//TODO 5.属性显示初始化的值可以是某一个具体的值,也可以使用_
//@BeanProperty var name:String = _
//TODO 6.如果父类中该属性使用了@BeanProperty修饰,子类中该属性也必须使用它修饰,否则运行时报错。
//以下两种写法由于没有使用@BeanProperty修饰,都是错误的。
//var name:String = "波斯猫"
//var name:String = _
@BeanProperty var name:String = _
}
}
实时效果反馈
1. 关于Scala类的抽象属性的相关描述,错误的是:
A 抽象属性定义:只有声明,没有显示初始化的属性。
B 包含抽象属性的类必须定义为抽象类。
C 非抽象的子类中必须要为抽象属性显示的初始化。
D 如果父类中该属性使用了@BeanProperty修饰,子类中该属性可以不使用使用它修饰。
答案:
1=>D 如果父类中该属性使用了@BeanProperty修饰,子类中该属性也必须使用它修饰,否则运行时报错。