ホームページ  >  記事  >  Java  >  Java の継承: 概念と使用法

Java の継承: 概念と使用法

WBOY
WBOY転載
2023-04-22 16:19:081720ブラウズ
    #継承の概念

    継承とは、サブクラスが親クラスの特性と動作を継承することを意味し、サブクラス オブジェクト (インスタンス) はインスタンス ドメインと親クラスのインスタンス ドメイン メソッド、またはサブクラスは親クラスからメソッドを継承するため、サブクラスは親クラスと同じ動作をします。

    継承により、新しいクラスを迅速に作成し、コードの再利用を実現し、プログラムの保守性を向上させ、新しいクラスの作成にかかる時間を大幅に節約し、開発効率と品質を向上させることができます。

    継承の利点:

    • コードの重複の削減

    • コードの再利用性の向上

    • 関数の拡張を容易にする

    • ##✅継承形式:
    クラス A は B を拡張{}

    A: サブクラス、派生クラス、サブクラス、B: 親クラス、スーパークラス、基本クラス、スーパークラス

    は以下を反映します: サブクラス A が親クラス B を継承すると、サブクラス A は親クラス B で宣言されたすべてのプロパティを取得します。 属性とメソッド、特に、でプライベートとして宣言された属性またはメソッドサブクラスが親クラスを継承した後も、親クラスのプライベート構造を取得したものとみなされます。カプセル化の影響があるだけで、サブクラスは親クラスを直接呼び出すことはできません。クラスの構造は次のとおりです。サブクラスは親クラスを継承した後、関数の拡張を実現するために独自の固有の属性やメソッドを宣言することもできます。親クラスは複数のサブクラスを持つことができます Java におけるクラスの単一継承: クラスは親クラスを 1 つだけ持つことができます サブクラスは相対的な概念です サブクラスが直接継承する親クラスは、直接親と呼ばれます クラス、親クラス間接的に継承されるものは、間接親クラスと呼ばれます。子クラスが親クラスを継承した後、直接の親クラスとすべての間接親クラスで宣言された属性とメソッドを取得します。宣言 それがクラスの親クラスである場合、このクラスは java.lang.Object クラスを継承します。Object クラスは、すべての Java クラスのルート親クラスです。

    継承における注意点:

    1. サブクラスは親クラスを選択的に継承できません;

    2. Java は多重継承をサポートしていませんが、クラスは複数のインターフェイスを実装できるため、単一継承の欠点は克服できます;

    3. 構築メソッドはサブクラスに継承されませんが、親クラスのコンストラクタをサブクラスから呼び出すことができます。

    class teacher{             //声明一个teacher类为父类
    	String name;      	   //定义父类的成员变量name、age   
    	int age;
    	void show(){           //定义父类成员方法,将成员变量输出
    		System.out.println(name); 	  
    		System.out.println(age); 
    	}
    }
    class Student extends teacher {     //声明一个Student类为子类并继承父类
    }
    public class myfirst {
    	public static void main(String[] args) {
    	System.out.println("学生");
    	Student student=new Student();     //声明一个Student类的实例对象student
    	student.name="Tom";                //子类调用父类的成员变量name并赋值
    	student.age=19;                    //子类调用父类的成员变量age并赋值
    	student.show();                    //子类调用父类的成员方法show
    	}
    }

    メソッドの書き換え

    実際のアプリケーションでは、作成する子クラスと親クラスの機能が異なるため、このメソッドを書き換えるか非表示にする必要があります。親クラスの。

    1 書き換え: サブクラスは親クラスを継承した後、親クラス内の同じ名前とパラメーターを持つメソッドを上書きできます。

    2 応用: 書き換え後、サブクラス オブジェクトが作成されるときに、子親クラス内の同じ名前と同じパラメータを持つメソッドが子クラス オブジェクトを通じて呼び出される場合、実際に実行されるのは、子クラスが親クラスのメソッドをオーバーライドすることです。

    3 オーバーライド規定:

    メソッド ステートメント:

    Permission修飾子の戻り値の型 メソッド名 (仮パラメータリスト)

    サブクラス内のメソッドはオーバーライドされたメソッドと呼ばれ、メソッドは親クラスのメソッドはオーバーライドされたメソッドと呼ばれます 記述されたメソッド、サブクラスによってオーバーライドされたメソッドのメソッド名および仮引数リストは、親クラスのオーバーライドされたメソッドのメソッド名および仮引数リスト、および権限と同じですサブクラスによってオーバーライドされたメソッドの修飾子は、親クラスのオーバーライドされたメソッドの修飾子以上です。メソッド権限修飾子の特殊なケース: サブクラスは、親クラスでプライベート権限として宣言されたメソッドをオーバーライドできません。

    戻り値についてtype:

    親クラスのオーバーライドされたメソッドの戻り値の型が void の場合、サブクラスによってオーバーライドされたメソッドの戻り値の型は void のみになります。親クラスのオーバーライドされたメソッドの戻り値の型クラスが型 A の場合、サブクラスによってオーバーライドされるメソッドの戻り値の型は、クラス A またはクラス A のサブクラスになります。

    親クラスのオーバーライドされたメソッドの戻り値の型は、基本データ型です (例: double) の場合、サブクラスによってオーバーライドされるメソッドの戻り値の型は同じである必要があります

    サブクラスと親クラスに同じ名前のパラメーターを持つメソッドは、メソッドをオーバーライドする前に非静的として宣言する必要があります。

    例:

    class A{
    	public void sayHello() {                      //输出英文欢迎
    		System.out.println("Hello,Welcome to Java!!!");
    	}
    	public void sayBye() {
    		System.out.println("GoodBye,everyone");
    	}
    }
    class B extends A {           
        public void sayHello() {                      //输出中文欢迎  
        	System.out.println("大家好,欢迎学习Java!!!");
        }
    }
    public class myfirst {
    	public static void main(String[] args) {
    	B b=new B();                                //创建子类B的一个实例对象,使用默认构造方法
    	b.sayHello();                               //调用子类中重写的方法
    	b.sayBye();                                 //调用父类中的方法
    	}
    }

    super キーワード

    super の使用は、親クラスの super として理解されます。

    スーパーの使用は、サブクラスのメソッドまたはコンストラクターで使用できます。 「super.property」または「super.method」を使用すると、親クラスで宣言されたプロパティまたはメソッドを明示的に呼び出すことができます。ただし、通常は「super.

    」を省略することに慣れています。特殊なケース:同じ名前のプロパティがサブクラスと親クラスで定義されている場合、親クラスで宣言されたプロパティを子クラスで呼び出したい場合は、「super.property」メソッドを明示的に使用して、プロパティが宣言されていることを示す必要があります。サブクラスが親クラスのメソッドをオーバーライドし、オーバーライドされた親クラスのメソッドをサブクラスのメソッドで呼び出したい場合は、「super.method」を明示的に使用する必要があります。メソッド。親クラスでオーバーライドされているメソッドが呼び出されていることを示します。

    super はコンストラクターを呼び出します。

    サブクラスのコンストラクターで "super (仮パラメーター リスト)" を明示的に使用できます。親クラスで宣言された指定のコンストラクタを呼び出す方法です。「super (形式パラメータリスト)」の使用は、サブクラスのコンストラクタの最初の行で宣言する必要があります。クラスのコンストラクタでは、「this (形式パラメータリスト)」を対象とします。 )"。パラメータリスト)" または super (仮パラメータリスト)" は 2 つのうちの 1 つだけを選択でき、同時に指定することはできません。コンストラクタの最初の行には、"this (仮パラメータリスト)" の明示的な宣言はありません。 )" または "super (仮パラメーター リスト)" "、親クラスのコンストラクターを呼び出します

    package first;
    class A{
        public String name="张飞";         //添加成员变量
    	public void say() {                //添加成员方法say
    		System.out.println("我是父类A成员方法say");
    	}
    }
    class B extends A{
        public String name="关羽";         //与父类中同名的字段,隐藏父类
    	public void say(){                 //重写方法say
    		super.say();                   //使用super关键字调用父类中的方法
    		System.out.println("我是子类B成员方法say");
            System.out.println("父类的name名字:"+super.name); //使用super关键字访问父类中的变量
    	}
    }
    public class myfirst {
    	public static void main(String[] args) {
    	  B b=new B();                     //创建子类的一个实例对象
    	  b.say();                         //调用子类中重写的方法
    	  System.out.println("子类的name名字:"+b.name);   //调用子类中的name
    	}
    }

    以上がJava の継承: 概念と使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。