面向?qū)ο?/h2>

this和super不能出現(xiàn)在static的方法中

  • 重寫:方法名和參數(shù)都相同,子類覆蓋父類

  • 重載:方法名相同,參數(shù)列表個(gè)數(shù)和類型不同

  • 重寫模塊

class Bird {
    public void fly() {
        System.out.println("fly in the sky");
    }
}

public class TestOverride extends Bird {
    public void fyl(){
        System.out.println("fly on the ground");
    }
    public static void main(String[] args) {
        TestOverride p = new TestOverride();
        p.fyl();
    }
}
  • 重載模塊
public class TestOverload {
    public String name;
    public String color;
    public int age;

    public TestOverload(){
        System.out.println("無(wú)參的構(gòu)造方法");
    }

    public TestOverload(String name,String color) {
        this.name = name;
        this.color = color;
        System.out.println("有2個(gè)參數(shù)的構(gòu)造方法");
    }

    public TestOverload(String name,String color,int age) {
        this(name,color); //這里的this 引用了上一個(gè)構(gòu)造器里的內(nèi)容,必須放在第一行
        this.age = age;
        System.out.println("有3個(gè)參數(shù)的構(gòu)造方法");
    }

    public static void main(String[] agrs) {
        TestOverload p = new TestOverload();
        TestOverload p1 = new TestOverload("chenanle","blue",24);

    }

}
  • 在一個(gè)構(gòu)造器中調(diào)用另一個(gè)重載的構(gòu)造器使用this來(lái)實(shí)現(xiàn),在子類構(gòu)造器中調(diào)用父類的構(gòu)造器使用super來(lái)實(shí)現(xiàn)

  • 以下代碼先打印父類中的語(yǔ)句,再打印出后面一條語(yǔ)句

class sub {
    public double size;
    public String name;

    public sub(){}

    public sub(double size,String name) {
        this.size = size;
        this.name = name;
        System.out.println("先打印父類中的語(yǔ)句");
    }
}
public class TestSub extends sub {
    public String color;
    public TestSub(String color,double size,String name) {
        super(size,name);
        this.color = color;
        System.out.println("再打印子類中的語(yǔ)句");
    }
    public static void main(String[] args) {
        TestSub ts = new TestSub("blue",5.6,"chenanle");
        System.out.println("最后打印如下語(yǔ)句");
        System.out.println(ts.size +"--"+ts.color+"--"+ts.name);
    }
}
結(jié)果為:
先打印父類中的語(yǔ)句
再打印子類中的語(yǔ)句
最后打印如下語(yǔ)句
5.6--blue--chenanle

多態(tài)

class BaseClass{
    public int book = 6;
    public void base() {
        System.out.println("父類普通的方法");
    }
    public void test() {
        System.out.println("父類被重寫的方法");
    }
}
class SubClass extends BaseClass {
    public String book = "books";
    public void sub() {
        System.out.println("子類普通的方法");
    }
    public void test() {
        System.out.println("子類重寫父類的方法");
    }
}
public class TestDuoTai {
    public static void main(String[] args){
        BaseClass bc = new BaseClass();
        System.out.println(bc.book);
        bc.test();
        bc.base();
        SubClass sc = new SubClass();
        System.out.println(sc.book);
        sc.test();
        sc.base();
        BaseClass polymorphism = new SubClass();   //多態(tài) ,向上轉(zhuǎn)型
        System.out.println(polymorphism.book);
        polymorphism.base();
        polymorphism.test();
    }
}
  • 打印結(jié)果為:
6
父類被重寫的方法
父類普通的方法
books
子類重寫父類的方法
父類普通的方法
6
父類普通的方法
子類重寫父類的方法
  • BaseClass polymorphism = new SubClass();它編譯時(shí)類型是BaseClass,運(yùn)行時(shí)是SubClass,當(dāng)調(diào)用引用變量的test()方法是,實(shí)際上是調(diào)用了子類里的test()方法,因?yàn)楦割惱锏膖est()方法被子類重寫了(覆蓋了),這就是多態(tài)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容