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

02 面向?qū)ο? 繼承,抽象類)

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

強(qiáng)調(diào):一定用自己的話總結(jié),避免抄文檔,否則視為作業(yè)未完成。

this關(guān)鍵字的作用

為了解決成員變量和局部變量所存在的二義性,適用于有參構(gòu)造時(shí)使用

示例

private String name;
    private int age;
    public person(){}
    public person(String name,int age){
        this.name =name;//不使用this關(guān)鍵字的話,他的值就是默認(rèn)值
        this.age =age;
    }
為成員變量設(shè)置值, 構(gòu)造器和setter方法的選擇,為什么?

構(gòu)造器:在知道具體的參數(shù)的時(shí)候可以使用,可以創(chuàng)建對象并做初始化,只能使用一次

setter方法:在不知道有具體參數(shù)的時(shí)候使用,在創(chuàng)建對象后再使用getter方法進(jìn)行調(diào)用,可以多次使用

示例:

public class person {
    private String name;
    private int age;
    public person(){}//無參構(gòu)造器,添加有參構(gòu)造器時(shí)必須寫
    public person(String name,int age){//有參構(gòu)造器
        this.name =name;
        this.age =age;
    }
    
//getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public void p(){
        System.out.println("名字:"+name+",年齡:"+age);
    }
為什么需要繼承?

解決多個(gè)類中存在有相同的字段和方法的重復(fù)問題

Java中的繼承語法

繼承時(shí)候使用extends關(guān)鍵字

public class 父類名{
    //父類,可以編寫多個(gè)不同類中相同的字段名
    // 存放多個(gè)子類共同的字段和方法
}

public class 子類名 extends 父類名{
    // 存放自己特有的(獨(dú)有的)字段和方法
}
子類能從父類中繼承到哪些成員?

1.public修飾的成員都可以被子類繼承
2.private 修飾的成員子類不能繼承

3.protected修飾的成員所有的子類都可以繼承,專門提供給子類使用

4.默認(rèn)的關(guān)鍵字只能是在同包下面可以被子類繼承

5.有參構(gòu)造器和無參構(gòu)造器不能被繼承

注意:java只支持單繼承,也支持多重繼承,不支持多繼承

繼承有一個(gè)根類:Objiect

子類什么時(shí)候需要覆蓋父類中的方法,方法重寫?(override)

在子類中添加一個(gè) 和父類一模一樣的方法

//執(zhí)行順序:
//1. 先找自己是否有對應(yīng)的方法,沒有就找父類的
//2.找父類中是否存在該方法,如果有就執(zhí)行,否則繼續(xù)找
//3.知道找到objiect類,如果也沒有就報(bào)錯(cuò)
方法覆蓋的規(guī)則

private修飾的方法不能被子類所繼承

  1. 實(shí)例方法簽名必須相同 (方法簽名= 方法名 + 方法的參數(shù)列表)
  2. 子類方法的返回值類型是和父類方法的返回類型相同或者是其子類
  3. 子類方法的訪問權(quán)限比父類方法訪問權(quán)限更大或相等
    • 如果父類方法是private,子類方法不能重寫。==> 重寫建立在繼承的基礎(chǔ)上,沒有繼承,就不能重寫。
super關(guān)鍵字的作用

在子類中的父類方法被覆蓋了,但任然需要父類中方法的東西就需要使用super關(guān)鍵字

示例

public class Ostrich extends Bird {

    public void fly() {
        System.out.println("自由奔跑");
    }

    //在子類中,如何調(diào)用父類中的方法
    public void doWork(){
        fly();//調(diào)用自己的fly方法

        //直接調(diào)用父類中的方法
        //super指向父類對象,只能找到直接父類
        super.fly();
    }
什么時(shí)候需要把父類中的方法定義成抽象方法?

子類必須要覆蓋父類中的某一個(gè)方法的時(shí)候

使用abstract修飾的方法,稱為抽象方法。 0

public abstract 返回類型 方法名(參數(shù));

抽象方法的特點(diǎn):

  • 使用abstract修飾,沒有方法體,留給子類去覆蓋

  • 抽象方法必須定義在抽象類或接口中

使用abstract修飾的類,成為抽象類。/

public abstract class 類名{
    
}
抽象類應(yīng)該怎么使用?可以直接使用抽象類創(chuàng)建對象嗎?

1.抽象類不可以創(chuàng)建對象,語法不支持

2.抽象類中可以同時(shí)擁有抽象方法和普通方法

3.抽象類必須要有子類,并且子類必須覆蓋父類的抽象方法,否則該抽象類沒有意義,或者子類也是抽象類(可以不覆蓋)

抽象類的意義是什么?

必須要有子類來進(jìn)行繼承,子類必須覆蓋父類的抽象方法,除非子類也是一個(gè)抽象類就不用覆蓋

Objiect中的equals和toString關(guān)鍵字
1.equals:

示例:

public class Student {
    private String name;
    private int age;
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
//重寫父類中的equals
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;//地址相同就是同一個(gè)對象
        //o為null或者兩個(gè)對象的類型不同,則不是同一個(gè)對象
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        //若果年齡相同并且姓名的值相同則表示同一個(gè)對象
        return age == student.age && Objects.equals(name, student.name);
    }
    //省略setter方法

public static void main(String[] args) {
        Student s1=new Student("國輝",23);
        Student s2=new Student("國輝",23);
        //==,基本數(shù)據(jù)類型比較值,引用類型比較值
        System.out.println(s1 == s2);//false
        //objiect類中的eqauls方法比較兩個(gè)對象的地址,作用和"=="相同


        //在Student類中重寫equals方法之后,此時(shí)比較兩個(gè)對象的值是否相同
        System.out.println(s1.equals(s2));//true

    }
2.toString

示例:

public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //重寫toString

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    //省略setter方法

 public static void main(String[] args) {
        Student s1=new Student("國輝",23);
        //cn.wolfcode._07_objiect.Student:全限定名
        //@157f12c:地址
        //objiect類中的toString:
        //重寫objiect的toString方法,打印對象的字段值
        System.out.println(s1.toString());//不具有打印功能,只做字符串轉(zhuǎn)換
        System.out.println(s1);

    }

?文章來源地址http://www.zghlxwxcb.cn/news/detail-457511.html

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

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

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

相關(guān)文章

  • 面向?qū)ο蟆鄳B(tài)、抽象類、接口

    面向?qū)ο蟆鄳B(tài)、抽象類、接口

    學(xué)習(xí)資料來自:黑馬程序員,內(nèi)容僅為學(xué)習(xí)記錄,侵刪 多態(tài) 多態(tài):事務(wù)存在的多種形態(tài) 多態(tài)的前提:1、有繼承關(guān)系;2、重寫父類方法;3、父類引用指向子類對象 面向?qū)ο?面向?qū)ο蠖鄳B(tài)中成員訪問特點(diǎn) 1.成員方法(動(dòng)態(tài)綁定):編譯看左邊(父類),運(yùn)行看右邊(子類)

    2024年02月08日
    瀏覽(28)
  • 面向?qū)ο笤斀?,面向?qū)ο蟮娜筇卣鳎悍庋b、繼承、多態(tài)

    面向?qū)ο笤斀?,面向?qū)ο蟮娜筇卣鳎悍庋b、繼承、多態(tài)

    一、面向?qū)ο笈c面向過程 面向?qū)ο缶幊?(Object-Oriented Programming,簡稱OOP)和 面向過程編程 (Procedural Programming,簡稱PP)是兩種不同的 編程范式 。 面向?qū)ο缶幊虖?qiáng)調(diào)把問題分解成對象,通過封裝、繼承和多態(tài)等機(jī)制,來處理對象之間的關(guān)系 。每個(gè)對象都可以獨(dú)立地處理自

    2024年02月21日
    瀏覽(23)
  • 黑馬程序員——javase進(jìn)階——day01——匿名對象 , 繼承 , 抽象類

    黑馬程序員——javase進(jìn)階——day01——匿名對象 , 繼承 , 抽象類

    目錄: 面向?qū)ο蠡仡?面向?qū)ο蟮暮诵乃枷胧鞘裁? 現(xiàn)有的類還是先有的對象? Java類的創(chuàng)建? 類中的組成成分? 創(chuàng)建對象所使用的? 創(chuàng)建對象的格式? 調(diào)用對象的成員? 定義構(gòu)造方法的格式? 定義構(gòu)造方法的特點(diǎn)? 構(gòu)造方法的作用? 面向?qū)ο笕筇卣魇鞘裁? 封裝的思想及其作

    2024年01月24日
    瀏覽(23)
  • C++ 面向?qū)ο螅?)——繼承

    C++ 面向?qū)ο螅?)——繼承

    面向?qū)ο蟪绦蛟O(shè)計(jì)中最重要的一個(gè)概念是繼承。繼承允許我們依據(jù)另一個(gè)類來定義一個(gè)類,這使得創(chuàng)建和維護(hù)一個(gè)應(yīng)用程序變得更容易。這樣做,也達(dá)到了重用代碼功能和提高執(zhí)行效率的效果。 當(dāng)創(chuàng)建一個(gè)類時(shí),您不需要重新編寫新的數(shù)據(jù)成員和成員函數(shù),只需指定新建的類

    2024年02月10日
    瀏覽(23)
  • Java面向?qū)ο罄^承

    目錄 繼承的概念 繼承的作用 繼承 extends implements super 與 this 繼承類型 類的繼承格式 繼承是面向?qū)ο缶幊讨械囊粋€(gè)概念,它允許一個(gè)類(稱為子類或派生類)繼承另一個(gè)類(稱為父類或基類)的屬性和方法。子類在繼承父類的同時(shí)也可以添加自己

    2023年04月13日
    瀏覽(20)
  • 【C++面向?qū)ο蟆?. 繼承

    【C++面向?qū)ο蟆?. 繼承

    繼承允許我們依據(jù)一個(gè)類來定義另一個(gè)類,這使得創(chuàng)建和維護(hù)一個(gè)應(yīng)用程序變得更容易。這樣做,也達(dá)到了 重用代碼功能 和 提高執(zhí)行時(shí)間 的效果。 當(dāng)創(chuàng)建一個(gè)類時(shí),我們不需要重新編寫新的數(shù)據(jù)成員和成員函數(shù),只需指定新建的類繼承了一個(gè)已有的類的成員即可。這個(gè)已

    2024年02月08日
    瀏覽(20)
  • python 面向?qū)ο笾^承

    python 面向?qū)ο笾^承

    前面我們已經(jīng)學(xué)習(xí)了 python 面向?qū)ο蟮念惡蛯ο?,那么今天我將為大家分享面向?qū)ο蟮娜筇匦灾唬豪^承。 繼承具有以下特性: 代碼重用:繼承允許我們創(chuàng)建一個(gè)新的類,并從一個(gè)或多個(gè)現(xiàn)有的類中繼承屬性和方法。這使得我們可以避免重復(fù)編寫相同的代碼,提高代碼的重

    2024年02月15日
    瀏覽(28)
  • 面向?qū)ο缶幊蹋荷钊肜斫獬橄箢惡完P(guān)鍵字

    面向?qū)ο缶幊蹋荷钊肜斫獬橄箢惡完P(guān)鍵字

    在Java編程中,我們經(jīng)常會(huì)遇到一些特殊的和概念,其中包括static、final以及抽象類等。本文將深入探討這些和概念的作用和使用方法,并通過一個(gè)實(shí)例展示抽象類的應(yīng)用。 1. 1.1 static static修飾成員變量:表示該成員變量屬于類,不屬于對象,所有對象共享

    2024年02月15日
    瀏覽(28)
  • C++:面向?qū)ο蟠罂樱毫庑卫^承

    C++:面向?qū)ο蟠罂樱毫庑卫^承

    單繼承:一個(gè)子類只有 一個(gè)直接父類 時(shí)稱這個(gè)繼承關(guān)系為單繼承。 圖示: 多繼承:一個(gè)子類有 兩個(gè)或以上直接父類 時(shí)稱這個(gè)繼承關(guān)系為多繼承。 圖示: 1.概念 菱形繼承:菱形繼承是多繼承的一種特殊情況。即:一個(gè)類是另外幾個(gè)類的子類,而這幾個(gè)子類又是另外一個(gè)類

    2024年04月27日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包