在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 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代码完全互操作。 |
性状是可堆叠的。因此, 超级调用是动态绑定的。 | 抽象类不可堆叠。因此, 超级调用是静态绑定的。 |
评论前必须登录!
注册