特定の物事から、共通する側面、本質的な属性、関係性を抽出して要約し、個別の本質的でない側面、属性、関係性を切り捨てる、このような思考プロセスです。抽象化と呼ばれます。
抽象クラス:
新しいメソッドを使用してインスタンス化できないクラス、つまり、特定のインスタンス オブジェクトを持たないクラスは、新しいメソッドを派生することしかできません。抽象クラスからサブクラスを経て、そのサブクラスがオブジェクトを作成します。
抽象メソッド:
抽象メソッドは、抽象で変更されたメソッドです。このメソッドは、返されたデータのみを宣言します。型、メソッド名、および必須パラメーターにはメソッド本体がありません。つまり、抽象メソッドを宣言するだけで済みます。メソッドが抽象メソッドの場合、このメソッドはサブクラスのメソッドによってオーバーライドされる必要があり、それ以外の場合はメソッドによってオーバーライドされる必要があります。サブクラスのメソッドは依然として抽象です;
抽象クラスの特性:
A: 抽象クラスと抽象メソッドは、abstract キーワードを使用して変更する必要があります;
B: 抽象クラスには抽象メソッドは存在しない可能性がありますが、抽象メソッドを持つクラスは抽象クラスとして定義する必要があります;
C: 抽象クラスは直接インスタンス化できません (サブクラスを介してインスタンス化することもできます(その後のサブクラス)オーバーライド メソッド) クラス) はポリモーフィックな方法でインスタンス化されます);
具体的ではありません;
抽象クラスにはサブクラス アクセス用のコンストラクターがあります。親クラス データの;
D: 抽象クラスのサブクラス;
抽象メソッドをオーバーライドしたくない場合は、サブクラスを次のようにする必要があります。抽象クラス;
具象クラスになるには、すべての抽象メソッドを書き直す必要があります;
次は、クラスの例です。抽象クラス :
public class AbstractDemo { public static void main(String[] args) { //Tree t = new Tree();//抽象的子类不能实例化;Error! Grass g = new Grass();//非抽象类的子类实例化 g.grow(); System.out.println("-------------"); Plant p = new Grass();//多态的方式 p.grow(); } } abstract class Plant{ public abstract void grow(); } /* * 1.子类是抽象类; */ abstract class Tree extends Plant{ Tree(){ System.out.println("tree"); } } /* * 2.子类不是抽象类,则必须重写所有抽象方法; */ class Grass extends Plant{ Grass(){ System.out.println("grass"); } public void grow(){ System.out.println("grass growing"); } }
抽象クラスのメンバーの特性:
A: メンバー変数
は変数または定数のいずれかです。
B: コンストラクター メソッド
は、親クラス データへのサブクラス アクセスの初期化に使用されます;
C: メンバー メソッド
は、抽象または次のいずれかにすることができます非抽象;
抽象クラス メンバー メソッドの特性:
A: 抽象メソッド
サブクラスが実行する必須要件;
B: 非抽象メソッド
#コードの再利用性を向上させるためにサブクラスから継承します;次に、抽象クラスのメンバーの例を示します:
public class AbstractMember { public static void main(String[] args){ Phone p = new Vivo(); //这里是多态;(用来实例化抽象类) p.height = 1460; //1600 -> 1460 System.out.println(p.height); System.out.println(p.width); System.out.println("-----------"); p.call(); //vivo call p.method(); //vivo method } } abstract class Phone{ public int height = 1600; public final int width = 960; public Phone(){} public Phone(String name,int count){} /*成员方法*/ public abstract void call();//抽象成员方法; public void method(){ //非抽象成员方法; System.out.println("phone method"); } } //非抽象子类,重写抽象父类的抽象方法: class Vivo extends Phone{ public void call(){ System.out.println("vivo call"); } public void method(){ System.out.println("vivo method"); } }
関連する学習の推奨事項:
以上がJavaの抽象化を理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。