在Scala中,抽象类是使用abstract关键字构造的。它包含抽象方法和非抽象方法, 并且不支持多个继承。
例子:
//Scala program to illustrate how to
//create an abstract class//Abstract class
abstract class Abstclass
{//Abstract and non-abstract method
def portal
def tutorial()
{
println( "Scala tutorial" )
}}//GFG class extends abstract class
class GFG extends Abstclass
{
def portal()
{
println( "Welcome!! srcmini" )
}
}object Main
{//Main method
def main(args : Array[String])
{
//object of GFG class
var obj = new GFG ();
obj.tutorial()
obj.portal()
}
}
输出如下:
Scala tutorial
Welcome!! srcmini
像类医院,特征可以具有方法(抽象的和非抽象的)以及字段作为其成员。特性就像Java中的接口一样。但是它们比Java中的接口更强大, 因为在特征中我们被允许实现成员。
【Scala中特质与抽象类有什么区别()】例子:
//Scala program to illustrate how to
//create traits//traits
trait mytrait
{//Abstract and non-abstract method
def portal
def tutorial()
{
println( "Scala tutorial" )
}}//GFG class extends trait
class GFG extends mytrait
{
def portal()
{
println( "Welcome!! srcmini" )
}
}object Main
{//Main method
def main(args : Array[String])
{//object of GFG class
var obj = new GFG ();
obj.tutorial()
obj.portal()
}
}
输出如下:
Scala tutorial
Welcome!! srcmini
特质 | 抽象类 |
---|---|
特性支持多重继承。 | 抽象类不支持多重继承。 |
我们被允许向对象实例添加特征。 | 我们不允许将抽象类添加到对象实例。 |
特性不包含构造函数参数。 | 抽象类包含构造函数参数。 |
特性仅在不包含任何实现代码时才可以完全互操作。 | 抽象类可与Java代码完全互操作。 |
性状是可堆叠的。因此, 超级调用是动态绑定的。 | 抽象类不可堆叠。因此, 超级调用是静态绑定的。 |
推荐阅读
- 同步和异步时序电路之间的差异
- 二叉树的奇数级和偶数级节点之和之间的差
- 算法题(K个最大偶数和奇数数组元素之和之间的差)
- 结构化,半结构化和非结构化数据之间的差异
- 停止和等待,GoBackN和选择性重复之间的区别
- SQL和NoSQL之间有什么区别(有哪些区别?)
- Spring和Spring Boot之间有什么区别()
- 假脱机和缓冲之间有什么区别()
- C#中SortedList和SortedDictionary之间的区别