我很迷惑。當我知道抽象基本上意味著該類是隱藏的并且沒有人可以實體化它時,我感到很興奮。涼爽的。但是當我知道有人可以來擴展我的類并實體化它時,使用所有方法,當有人可以竊取您的所有品質,像您一樣行事并推銷自己時,將類抽象化有什么意義?市場。
如果有人可以幫助我解釋這一點,我將不勝感激。
uj5u.com熱心網友回復:
如果您想防止其他人從您的類繼承,請使用final. 但不是它的層次結構的最后一個,所以它不能再被繼承和被宣告abstract(因為它已經過時了)。抽象類是模板。它們繼承屬性和函式而不具體實作它們(您當然可以為所有人提供默認行為,但abstract宣告方法背后的想法是abstract-> 未實作)并且僅用于構建層次結構。例子:
abstract class Vehicle {...}
class Car extends Vehicle {...}
class Bike extends Vehicle {...}
Vehicle描述了共同的屬性,但具體的實體化太模糊了。我們稱所有型別的車輛為“車輛”,即使我們從未純粹在自然界中見過其中一種。這是一種思想結構,可以更輕松地對汽車或自行車等具體形式進行分類。
uj5u.com熱心網友回復:
抽象類基本上意味著隱藏實作細節,只向用戶顯示功能。
抽象類可以有以下方法。
抽象方法
在 Java 8 之后,它們也可以有非抽象方法
靜態方法
最終方法
抽象類A{
抽象無效運行();//抽象方法
}
B 類擴展 A{
void run(){ System.out.println("安全運行"); }
}
上面你可以看到 run() 方法在類 A 中沒有任何實作。
它不能被實體化,因為在類 A 中沒有 run() 的實作
所以為了讓它作業,它需要被擴展和實作(這就是在 B 類中所做的)。
在外部世界中,人們只能看到 run() 他們將無法了解 run 是如何作業的或 run() 方法的實際實作。
有關更多資訊,請參閱此鏈接:java 中的抽象類
uj5u.com熱心網友回復:
抽象類不是隱藏的。抽象類是“不完整”的類,可以通過許多不同的方式“完成”。如果您的類包含許多相似的代碼,那么將所有相似的代碼移到抽象類中并讓您的類擴展這個抽象類可能是個好主意。
否則,抽象類的功能非常齊全。他們甚至可以有建構式,盡管你不能實體化它們。這些建構式可以通過super子類建構式中的關鍵字呼叫:
abstract class Parent {
private String name;
public Parent(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Child extends Parent {
private boolean hasMilkTeeth;
public Child(String name, boolean hasMilkTeeth) {
super(name); // calls the parent constructor!
this.hasMilkTeeth = hasMilkTeeth;
}
public boolean hasMilkTeeth() {
return hasMilkTeeth;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/389197.html
上一篇:如何為類的所有實體運行一個方法
