これがあなたの質問に答えるかどうかはわかりませんが、一般的に抽象クラスについて話している場合、子クラスがすべての詳細を知ったり処理したりすることなく、それを拡張する機能を子クラスに提供するためにそこにあります。実装 (子クラスのユーザーからは隠されています)。
たとえば、車を見てみましょう。
public abstract class Vehicle {
protected int _numberOfWheels;
public Vehicle() {
this._numberOfWheels = 4;
}
}
public class Truck extends Vehicle {
public int carryingLoad;
public Truck() {
this.carryingLoad = 4000; // kg or something
}
}
したがって、 vehicle は vehicle オブジェクトの抽象的なインスタンスであり、車輪の数など、関連付けられたいくつかの機能がすでにあります。これは保護されたメソッドなので、トラックの新しいインスタンスを作成すると:
// Inside main
Truck truck = new Truck();
ただし、クラス内でトラックの関数を次のように記述した場合、車輪の数を変更することはできません。
// Inside the Truck class
public void addSpareTire() {
this._numberOfWheels++;
}
私はそれを次のように呼び出すことができます:
// Inside main
truck.addSpareTire();
いくつかの変数と対話することはできましたが、抽象クラスを拡張するクラス内の関数を徹底的に処理することしかできませんでした。を呼び出すことで一度に 1 つのタイヤを追加できますが、オブジェクトを使用しているメイン関数からaddSpareTire()
直接対話することはできませんでしたが、クラス宣言内からはできます。トラック オブジェクトのユーザーからは、その情報は隠されています。_numberOfWheels
Truck
Truck
これがあなたの求めているものかどうかはわかりません。お役に立てれば。