私は約2ヶ月前にJavaを使用し始めたと私はより多くの抽象クラスを理解しようとしています。私は基本的な抽象の考え方とその実装が、私は取得しない抽象クラスが別の抽象クラスを拡張し、それがどのような機能を追加しない理由であると理解しています。また、私は別の抽象クラスを拡張する抽象クラスを見ましたが、それは他の抽象クラスの唯一の機能を実装します。
私は例のコードを調べましたが、彼らは唯一の彼らに説明なしでの実装を示しています。
public abstract class Beverage {
String description = "Beverage";
public String getDescription(){
return description;
}
public abstract double cost();
}
// abstract class CondimentDecorator
public abstract class CondimentDecorator extends Beverage {
@Override
public abstract String getDescription();
}
ご覧のとおり、抽象クラスは、CondimentDecorator
内のすべての機能を実装していないBeverage
抽象クラス。それだけで実装 getDescription()
機能。しかし、もしCondimentDecorator
、その後のコンクリートだった内部のすべての機能を実装するために必要となるBeverage
抽象クラス。
1つの抽象クラスが別の抽象クラスを拡張するとき、それは完全に罰金です。それはちょうどそれがあることを意味詳細新しいクラスの振る舞いに基づく古いクラスの振る舞いにします。その行動のいくつかはまだ不明ですので、しかし、それは、まだ使用される完全なオブジェクトではありません。
現実の世界と同様に。
あなたはクラスを持っている想像してみてVehicle
。これは、任意の車両になります、車、飛行機、バス、自転車、何でも。これはあなたの抽象クラスです。あなたは今、それを使用することはできますか?いいえ、あなたはペダルを押したり、ホイールを回すために持っているかどうかわからないので。
今、あなたは、たとえば、別のクラスを作成しますCar extends Vehicle
。あなたは今、それを使用することはできますか?おそらく、あなたはまだそれがトラックや乗用車のかどうかわかりません。しかし、あなたは、それは、ステアリングホイールを持っていることを知っています。
そして最後に、あなたはもう一つのクラスを作成する場合、たとえば、MySuperPassengerCar extends Car
あなたがそれを使用し、それが持っているものな方法することができますどのように、これは、あるオブジェクトを正確に知っています。