Java対象向けプログラミングなどの継承詳細


本明細書の例は、Javaがオブジェクトに向けてプログラミングするなどの継承を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
引継ぎ:特殊類は一般類の全部の属性と行為を持っています。
相続のメリット:
1.コードの多重性を向上させました。
2.類と類を前に関係させ、この関係があってこそ多形の特性がある。継承はクラスとクラスの前の関係です。
注意事項:
1.javaは単一継承のみをサポートしており、マルチ継承はサポートされていません。複数の親が同じ関数を定義していますが、機能が異なるため、サブクラスはどれを実行するか分かりません。
2.サブクラスが親クラスを継承する場合は、親タイプのあらゆる方法と属性を継承し、直接使用することができます。
3,javaは多層継承をサポートします。すなわち、孫-子-父の関係です。
構文:

[    ] class     extends    {
    ;
}

たとえば:

class Pserson
{
  int age;
  String name;
  public void speak()
  {
    System.out.println("Hello World!");
  }
}
//  Person ,            
class Student extends Pserson
{
  public void study()
  {
    System.out.println("Good Study!");
  }
}
//  Person ,            
class Worker extends Pserson
{
  public void work()
  {
    System.out.println("Good work!");
  }
}

継承システムの機能はどのように使いますか?
親の機能を見て、サブオブジェクトを作成します。
継承過程でよくこの3つの場面に遭遇します。
1)同名変数
1.サブクラスにプライベートではない同名のメンバー変数が発生した場合、サブクラスはこのクラスの変数にアクセスし、thisを使用します。サブクラスは親クラスの同名変数にアクセスし、superを使用します。
2.thisは本類の対象の参照を表します。
3.superは親の対象を表す引用(用法はthisと同じ)
2)同名の関数
1.サブクラスが親と同じ関数が現れた場合(関数名とパラメータが同じ)、サブクラスのオブジェクトがこの関数を呼び出した場合、サブクラスの関数の内容が実行されます。親の関数は上書きされます。
2.書き換え定義:子類は父類を継承し、父類の機能を踏襲し、子類に入る。しかし、サブクラスはこの機能を備えていますが、機能の内容が親と一致しない場合、新しい機能を定義する必要はなく、カバー特性を使用し、親の機能定義を保持し、機能の内容を書き換えます。
3.書き換え(上書き)注意事項:
<1>サブクラスは親クラスをカバーし、サブクラスの権限が親クラスの権限より大きいことを保証しなければなりません。そうでなければ、コンパイルが失敗します。public>修辞キーワードを書かない>privte)
<2>静的は静的のみをカバーすることができます。
<3>リロード:同じ名前の関数のパラメータリストだけを見て書き換えます。子供の親の方法は同じです。(関数名とパラメータリスト)

class Fu
{
  //public void show()      show() ,          ,   show      
  public void show(String name) //   show        (       ),     show       
  {
    System.out.println(name);
  }
}
class Zi extends Fu
{
  public void show()
  {
    System.out.println("zi");
  }
}
class Jicheng
{
  public static void main(String[] args)
  {
    Zi z1=new Zi();
    z1.show("nihao");//      show  
  }
}

3)コンストラクタ
1.サブクラスのオブジェクトを初期化すると、親の構造関数も実行されます。サブクラスの構造関数の最初の行には暗黙的なステートメントsuper()がデフォルトであるからです。
2.super()は親の中空パラメータの構造関数にアクセスします。また、サブクラスのすべての構造関数の最初の行は標準的にsuper()です。
3.サブクラスは必ず親の構造関数の原因を訪問します。
<1>親類のデータサブクラスは直接に入手できるので、サブクラスは作成時に、親類がどのようにこれらのデータを初期化しているかを見てから、サブクラスはオブジェクト初期化時に、デフォルトでは先に親類の構造関数にアクセスします。
<2>親が作成した構造関数または父が空のパラメータを持っていない構造関数にアクセスする場合は、super文を手動で定義する方法で作成できます。
<3>もちろん、サブクラスの構造関数の最初の行は、手動でthis文を指定して、このクラスの構造関数を尋ねてもいいですが、サブクラスの中に少なくとも一つの構造関数が父類の構造関数にアクセスします。

class Fu
{
  String name;
  int age;
  Fu(){System.out.println("Hello Fu");}
  Fu(String name)
  {
    System.out.println(name);
  }
  Fu(String name,int age)
  {
    this.name=name;
    this.age=age;
    System.out.println("name: "+name+",age: "+age);
  }
}
class Zi extends Fu
{
  //Zi(){System.out.println("Hello Zi");}                 
  Zi()
  {
    super("zhangsan",20);//   super           ,           
    System.out.println(name+"::"+age);
  }
}
class Test
{
  public static void main(String[] args)
  {
    Zi z1=new Zi();
  }
}

構造関数異常例:
プログラムの結果を書き出す

class Super
{
  int i=0;
  public Super(String s)
  {
    i=1;
  }
}
class Demo extends Super
{
  public Demo(String s)
  {
    i=2;
  }
  public static void main(String[] args)
  {
    Demo d=new Demo("yes");
    System.out.println(d.i);
  }
}
//    ,               。
//        super                。

例を書き換えて再読み込みします。

class Demo
{
   int show(int a,int b){return 0;}
}

これらの関数はDemoのサブクラスに存在することができます。
A.public int show(int a,int b){return 0;///はい、カバーします。
B.prvate int show(int a,int b){return 0;///いいえ、権限が足りません。
C.prvate int show(int a、long b){return 0;///はい、親とは関数ではありません。上書きされていません。
D.public shot(int a,int b){return 0;/////いいえ、この関数は与えられた関数と同じクラスに現れることができません。または、親のサブクラスにはできません。
E.static int show(int a,int b){return 0;////いいえ、静的は静的をカバーするだけです。br/>
したがって、書き換えと重載がサブクラスに許されます。
もっと多くのjava関連の内容に興味がある読者は当駅のテーマを調べてもいいです。「Javaは対象プログラムに向かって入門と階段教程を設計します。」、「Javaデータ構造とアルゴリズム教程」、「Java操作DOMノード技術のまとめ」、「Javaファイルとディレクトリの操作テクニックのまとめ」、「Javaキャッシュ操作テクニックのまとめ
本論文で述べたように、皆さんのjavaプログラムの設計に役に立ちます。