1.抽象类是声明用abstract
2.方法是抽象方法
在抽象类中只需要定义方法,没有实现
3.字段是抽象方法
在抽象类中不给字段进行赋值
4.代码
package
com.jn.scala.oop
/**
* @authoradmin
*/
class
AbstractClassOps{
var
id
: Int = _
//使用占位符,只有在var时候可以使用占位符.val的时候是不能使用占位符的。
}
abstract
class
SuperTeacher(
val
name
:
String
){
var
id
: Int
//在字段进行申明的时候不给字段进行赋值,
var
age
: Int
def
teach
//抽象方法不需要写方法的实现体,前面不需要添加关键字abstract
}
class
TeacherForMethod(
name
:
String
)
extends
SuperTeacher(
name
){
override
var
id
=
name
.
hashCode
()
//对抽象类定义的属性进行赋值
override
var
age
=
15
//实现抽象类的方法和属性的赋值可以不写override但是建议都写上,这样更加明了。
override
def
teach
{
//对抽象类定义的方法进行实现,
println
(
"Teaching!"
)
}
}
object
AbstractClassOps
{
def
main
(
args
: Array[
String
]): Unit = {
val
teach
=
new
TeacherForMethod(
"Spark"
)
println
(
"teach.id="
+
teach
.
id
)
println
(
"teach.age="
+
teach
.
age
)
teach
.
teach
}
}
//运行结果
teach.id=80085693
teach.age=15
Teaching!