在 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!! GeeksforGeeks")
}
}
object Main
{
// Main method
def main(args: Array[String])
{
// object of GFG class
var obj = new GFG ();
obj.tutorial()
obj.portal()
}
}
輸出:
Scala tutorial Welcome!! GeeksforGeeks
就像上課一樣,特性可以有方法(抽象和非抽象)和字段作為其成員。 Traits 就像 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!! GeeksforGeeks")
}
}
object Main
{
// Main method
def main(args: Array[String])
{
// object of GFG class
var obj = new GFG ();
obj.tutorial()
obj.portal()
}
}
輸出:
Scala tutorial Welcome!! GeeksforGeeks
特性 | 抽象類 |
---|---|
特征支持多重繼承。 | 抽象類不支持多重繼承。 |
我們可以向對象實例添加特征。 | 我們不允許向對象實例添加抽象類。 |
Traits 不包含構造函數參數。 | 抽象類包含構造函數參數。 |
僅當特征不包含任何實現代碼時,它們才完全可互操作。 | 抽象類與 Java 代碼完全可互操作。 |
特質是可以疊加的。因此,超級調用是動態綁定的。 | 抽象類是不可堆疊的。因此,超級調用是靜態綁定的。 |
相關用法
- Scala TreeSet product()用法及代碼示例
- Scala TreeSet apply()用法及代碼示例
- Scala TreeSet clear()用法及代碼示例
- Scala TreeSet clone()用法及代碼示例
- Scala TreeSet contains()用法及代碼示例
- Scala TreeSet copyToArray()用法及代碼示例
- Scala TreeSet count()用法及代碼示例
- Scala TreeSet diff()用法及代碼示例
- Scala TreeSet drop()用法及代碼示例
- Scala TreeSet dropRight()用法及代碼示例
- Scala TreeSet dropWhile()用法及代碼示例
- Scala TreeSet equals()用法及代碼示例
- Scala TreeSet exists()用法及代碼示例
- Scala TreeSet filter()用法及代碼示例
- Scala TreeSet find()用法及代碼示例
- Scala TreeSet forall()用法及代碼示例
- Scala TreeSet foreach()用法及代碼示例
- Scala TreeSet head()用法及代碼示例
- Scala TreeSet init()用法及代碼示例
- Scala TreeSet intersect()用法及代碼示例
- Scala TreeSet isEmpty()用法及代碼示例
- Scala TreeSet last()用法及代碼示例
- Scala TreeSet map()用法及代碼示例
- Scala TreeSet max()用法及代碼示例
- Scala TreeSet min()用法及代碼示例
注:本文由純淨天空篩選整理自ankita_saini大神的英文原創作品 Difference Between Traits and Abstract Classes in Scala。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。