国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【JAVA】面向?qū)ο蟮木幊陶Z(yǔ)言(繼承篇)

這篇具有很好參考價(jià)值的文章主要介紹了【JAVA】面向?qū)ο蟮木幊陶Z(yǔ)言(繼承篇)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【JAVA】面向?qū)ο蟮木幊陶Z(yǔ)言(繼承篇),初識(shí)JAVA,java,python,開發(fā)語(yǔ)言


個(gè)人主頁(yè):【??個(gè)人主頁(yè)】
系列專欄:【??初識(shí)JAVA】



前言

在之前的文章中,我們介紹過面向?qū)ο蟮木幊陶Z(yǔ)言,今天我們就來(lái)就進(jìn)入到JAVA面對(duì)對(duì)象的編程世界,今天我們主要來(lái)介紹面向?qū)ο蟮木幊谭妒街幸粋€(gè)重要的概念——繼承。
【JAVA】面向?qū)ο蟮木幊陶Z(yǔ)言(繼承篇),初識(shí)JAVA,java,python,開發(fā)語(yǔ)言

繼承

繼承是java面向?qū)ο缶幊碳夹g(shù)的一塊基石,因?yàn)樗试S創(chuàng)建分等級(jí)層次的類。

繼承就是子類繼承父類的特征和行為,使得子類對(duì)象(實(shí)例)具有父類的實(shí)例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。

類的繼承方式

在JAVA中我們可以通過 extends 關(guān)鍵字可以申明一個(gè)類是從另外一個(gè)類繼承而來(lái)的:

class 父類 {
}
 
class 子類 extends 父類 {
}

繼承的各種類型

【JAVA】面向?qū)ο蟮木幊陶Z(yǔ)言(繼承篇),初識(shí)JAVA,java,python,開發(fā)語(yǔ)言

多繼承

Java不支持多重繼承,即一個(gè)子類不能繼承多個(gè)父類。這是因?yàn)槎嘀乩^承可能會(huì)導(dǎo)致一些問題,比如:

  • 命名沖突:如果兩個(gè)父類中有相同的方法屬性,則子類不知道該繼承哪一個(gè)。
  • 菱形繼承問題:如果一個(gè)類同時(shí)繼承自兩個(gè)父類,這兩個(gè)父類又都繼承自同一個(gè)父類,則子類中會(huì)存在兩個(gè)相同的父類,容易造成混亂。

為了解決這些問題,Java引入了接口(interface)的概念,使得一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口。雖然接口中也可以定義方法和屬性,但是接口中的方法都是抽象方法,沒有方法體,而且接口中的屬性都是常量。這樣可以避免命名沖突和菱形繼承問題。通過實(shí)現(xiàn)不同的接口,一個(gè)類可以具有多個(gè)不同的功能。

繼承的特性

  • 子類擁有父類非 private 的屬性、方法
  • 子類可以擁有自己的屬性和方法,即子類可以對(duì)父類進(jìn)行擴(kuò)展。
  • 子類可以用自己的方式實(shí)現(xiàn)父類的方法。
  • Java 的繼承是單繼承,但是可以多重繼承,單繼承就是一個(gè)子類只能繼承一個(gè)父類,多重繼承就是,例如 B 類繼承 A 類,C 類繼承 B 類,所以按照關(guān)系就是 B 類是 C 類的父類,A 類是 B 類的父類,這是 Java 繼承區(qū)別于 C++ 繼承的一個(gè)特性。提高了類之間的耦合性(繼承的缺點(diǎn),耦合度高就會(huì)造成代碼之間的聯(lián)系越緊密,代碼獨(dú)立性越差)。

各種繼承關(guān)鍵字

extends關(guān)鍵字

在 Java 中,extends 關(guān)鍵字用于表示一個(gè)類繼承自另一個(gè)類。子類(派生類)繼承父類(基類、超類)的所有方法和屬性,并且還可以添加自己的方法和屬性。被繼承的類稱為超類或基類,繼承自該類的類稱為子類或派生類。

class Animal {
    void move() {
        System.out.println("動(dòng)物可以移動(dòng)");
    }
}

class Dog extends Animal {
    void move() {
        System.out.println("狗可以跑和走");
    }
}

public class TestDog {
    public static void main(String args[]) {
        Animal a = new Animal(); // Animal 對(duì)象
        Animal b = new Dog(); // Dog 對(duì)象

        a.move(); // 執(zhí)行 Animal 類的方法

        b.move(); // 執(zhí)行 Dog 類的方法
    }
}

Animal 類是一個(gè)超類,Dog 類是一個(gè)子類。Dog 繼承了 Animal 類,并重寫了 Animal 類的 move() 方法。在 main() 方法中,創(chuàng)建了 Animal 和 Dog 類的對(duì)象,并調(diào)用了它們的 move() 方法。由于 Animal 對(duì)象調(diào)用的是 Animal 類的 move() 方法,而 Dog 對(duì)象調(diào)用的是 Dog 類重寫的 move() 方法。

implements關(guān)鍵字

implements是Java中的一個(gè)關(guān)鍵字,用于實(shí)現(xiàn)接口。當(dāng)一個(gè)類實(shí)現(xiàn)一個(gè)接口時(shí),必須使用implements關(guān)鍵字,并且實(shí)現(xiàn)該接口中定義的所有方法。

public interface MyInterface {
   public void method1();
   public void method2();
}

public class MyClass implements MyInterface {
   public void method1() {
      System.out.println("Implementation of method1");
   }
   public void method2() {
      System.out.println("Implementation of method2");
   }
}

MyClass實(shí)現(xiàn)了MyInterface接口并實(shí)現(xiàn)了其中的method1和method2方法。這使得MyClass能夠使用接口中定義的方法,并且可以通過多態(tài)性來(lái)引用MyInterface的實(shí)例。

super 與 this 關(guān)鍵字

Java 中的 super 和 this 都是關(guān)鍵字,分別用于訪問父類和本類中的成員。

super 關(guān)鍵字

super 可以用來(lái)訪問父類中被子類覆蓋的方法和屬性

super.父類方法名(參數(shù)列表);//或者
super.父類屬性名;
//例如:
public class Father {
    public String name;
    
    public Father(String name) {
        this.name = name;
    }
    
    public void eat(String food) {
        System.out.println(name + " is eating " + food);
    }
}

public class Son extends Father {
    public int age;
    
    public Son(String name, int age) {
        super(name);
        this.age = age;
    }
    
    @Override
    public void eat(String food) {
        super.eat(food); // 調(diào)用父類的 eat 方法
        System.out.println(name + " is " + age + " years old");
    }
}

public class Test {
    public static void main(String[] args) {
        Son son = new Son("Tom", 18);
        son.eat("apple");
    }
}

其中,父類方法和屬性必須是被子類繼承和覆蓋的。在子類中,如果要訪問父類中的成員,就可以使用 super 關(guān)鍵字。

this 關(guān)鍵字

this 關(guān)鍵字可以用來(lái)引用當(dāng)前對(duì)象的屬性或方法

this 關(guān)鍵字可以用來(lái)引用當(dāng)前對(duì)象的屬性或方法//或者
this 關(guān)鍵字可以用來(lái)引用當(dāng)前對(duì)象的屬性或方法
//例如:
public class Student {
    private String name;
    private int age;
    
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public void getInfo() {
        System.out.println("Name: " + this.name);
        System.out.println("Age: " + this.age);
    }
}

public class Test {
    public static void main(String[] args) {
        Student s = new Student("Tom", 18);
        s.getInfo();
    }
}

final 關(guān)鍵字

Java 中的 final 關(guān)鍵字用于表示不可變的值或不可變的引用
對(duì)于變量,final 修飾的變量表示為常量,一旦被賦值后不能被修改。

  • 對(duì)于方法,final 修飾的方法表示方法不能被子類重寫。
  • 對(duì)于類,final 修飾的類表示類不能被繼承。

使用 final 可以使程序更加安全可靠,因?yàn)槌A恐挡蛔?,可以防止意外修改值?dǎo)致程序出錯(cuò);final 方法和類可以保證方法和類的行為不會(huì)被改變,有助于程序設(shè)計(jì)和優(yōu)化。
【JAVA】面向?qū)ο蟮木幊陶Z(yǔ)言(繼承篇),初識(shí)JAVA,java,python,開發(fā)語(yǔ)言文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-699229.html

到了這里,關(guān)于【JAVA】面向?qū)ο蟮木幊陶Z(yǔ)言(繼承篇)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包