ホームページ  >  記事  >  Java  >  Javaの継承とメソッドのオーバーライドにはどのような特徴がありますか?

Javaの継承とメソッドのオーバーライドにはどのような特徴がありますか?

WBOY
WBOY転載
2023-04-22 16:28:081547ブラウズ

概念: 継承はオブジェクト指向文法の 3 つの主要な機能の 1 つであり、継承によりコードの冗長性が削減され、プログラミングの効率が向上します。サブクラスを継承すると、親クラスの特定の属性やメソッドを自由に呼び出すことができます。サブクラスは親クラスを 1 つだけ継承できますが、親クラスは複数のサブクラスで継承できます。それは、子供たちが生涯にわたって父親の財産を引き継ぐことを私たちに示しているようなものです。オーバーライドの利点は、サブクラスが必要に応じて独自の動作を定義できることです。言い換えれば、サブクラスは必要に応じて親クラスのメソッドを実装できます。ゴールデンレトリバーやハスキー犬と同じように、それらの特徴は犬、ハムスター、リスに由来し、それらの特徴はマウスに由来し、それらの違いは遺伝子変異であり、これは以下と同等です。書き換え

継承の特性:

1): Java は単一ルート継承のみをサポートします。つまり、クラスは直接の親クラスを 1 つだけ持つことができ、親クラスは複数のサブクラスを持つことができます

2): サブクラスのパブリック属性を抽出して、継承用の親クラス属性を生成します

##3): サブクラスは、親クラスのプライベート##によって変更された属性とリソースを継承したり上書きしたりすることはできません## オーバーライドの特徴:

1). サブクラスによってオーバーライドされるメソッドは、親クラスのオーバーライドされるメソッドと同じメソッド名およびパラメーター リストを持つ必要があります (

2)。サブクラス メソッドの戻り値の型は、親クラスのオーバーライドされた戻り値の型より大きくすることはできません

3). サブクラスによってオーバーライドされるメソッドによって使用されるアクセス許可は、親クラスのアクセス許可よりも小さくすることはできません親クラスのオーバーライドされたメソッド。親クラスでプライベートとして宣言されたメソッド (つまり、プライベート属性) はオーバーライドできません。

#4) サブクラスのメソッドによってスローされる例外は、オーバーライドされたメソッドによってスローされる例外を超えることはできません。親クラスの

必須 使用されるメソッドまたはキーワード:

extends: このキーワードを介して継承できます。継承は、キーワード # の後に継承する必要があるクラスまたはメソッドを記述することで実現できます。

##super (): このメソッドを使用すると、

を使用して継承した親クラスのプロパティまたはメソッドを呼び出すことができます。 テスト クラス:

package com.ytzl.total;
/*继承*/
public class inherit {
    public static void main(String[] args) {
        son son = new son();//调用子类
        System.out.println(son.a);//调用子类中的属性
        son.a=2;//可以通过子类改变父类中的属性
        System.out.println("更改后的父类属性"+son.a);
        son.myfather();//带调用父类的方法
        son.money();//调用重写的方法w
        son.jng();//调用静态修饰方法
        son.jing();
        System.out.println("子类通过继承方法调用父类中的属性=>"+son.b);//调用父类中的静态属性
        son.two();
    }
}

親クラス:

package com.ytzl.total;
public class father {
    int a=0;
    static int b=2;
    private int one=4;//被私有属性修饰后将不能别子类调用或继承,
    protected int two=0;
    protected void two(){//该方法只能被子类继承重写不能被调用
        System.out.println("我是protected方法");
    }
    public void setOne(int one) {
        this.one = one;
    }
    public void money(){
        System.out.println("我是被子类重写的方法");
        System.out.println("父类的属性=>"+a);
    }
    public void myfather(){
        System.out.println("我是被子类继承的方法");
    }
    public static void jing(){
        System.out.println("你好");
    }
    public static void jng(){
        System.out.println("你好");
    }
    private void dong(){
        System.out.println("私有方法");
    }
}

サブクラス:

package com.ytzl.total;
public class son extends father{
    //方法的重写
    public void money(){
        super.money();//通过继承过去父类的money方法里的内容
        System.out.println("重写后的方法");
        System.out.println("被继承后"+super.a);//通过super来继承父类的属性
        System.out.println("继承后的protected属性=>"+super.two);//通过super来继承protected方法
        super.two();
    }
    public static void jing(){//不能重写静态方法static
        System.out.println("不好");
    }
    private void dong(){//不能重写或者继承父类的私有方法
        System.out.println("私有方法");
    }
    protected void two(){//重写后的protected方法
        System.out.println("我是重写后的protected方法");
    }
}

実行後の結果:

以上がJavaの継承とメソッドのオーバーライドにはどのような特徴がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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