ホームページ >Java >&#&チュートリアル >Java の継承: 概念と使用法
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 書き換え: サブクラスは親クラスを継承した後、親クラス内の同じ名前とパラメーターを持つメソッドを上書きできます。
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 はコンストラクターを呼び出します。
サブクラスのコンストラクターで "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 サイトの他の関連記事を参照してください。