Java學習筆記---繼承和super的用法

?

自從換了個視頻教學,感覺比原來那個好多了,就是學校網速太渣,好多視頻看一會卡半天,只能先看看已經下載的了.

不過也好,雖然不能從開始開始重新開,但是已經看過一次,在看一次也是好的,就當鞏固學習了.

?

繼承的關鍵字:extends

格式如下: class 子類名 extends父類名{

...

}

例如 學生是繼承人類這一父類的.

class student extends person{

...

}

如果一個類的聲明沒有使用關鍵字extends,則這個類默認是繼承Object類的.Object是所有類的父類.Object是java.lang包中的類.

當一個子類繼承了一個父類時,子類可以調用父類中的所有方法和成員變量.子類也可以單獨自己聲明方法或者變量.

下面的代碼創建了4個class.分別是Dog,Cat,Animal和包含主函數的Main類.其中Dog和Cat是繼承父類Animal的.

?

Cat繼承Animal類:

package com.cnblogs;

public class Cat extends Animal{ ?

//不帶參數的默認構造器

?public Cat(){ ??

//super();必須出現在構造方法的首行. ??//this();也如此. ?

?    super();

?//?super("XX",10);? 該代碼表示調用父類帶參的構造器 ?

?System.out.println("Cat構造器"); ?}

?/* public String name;

?  public int age; ?

  ?public void walk(){

    System.out.println("Cat....walk"); ?

}

?public void sleep(){

    System.out.println("Cat....sleep");

?} ?*/

?//注解提示

@Override ?

public void how(){

    System.out.println(name +" "+ "Cat....miaomiao");??

//super 強制調用父類的show()方法法.

//如果沒有super,show();是this.show();的默認寫法. ??

//步驟是:先調用子類的show()方法.子類如果沒有show方法才調用父類的show()方法??

    super.show();

?}

?public void show(){

    System.out.println(name +" "+ "Cat----->show"); ?

}

}

聲明Dog類:

package com.cnblogs;

public class Dog extends Animal { ?

/*public String name;

?? public int age; ?

?? public void walk(){

??    System.out.println("Dog....walk"); ?

} ?

? ?public void sleep(){ ?

?    System.out.println("Dog....sleep");

?} ?*/

? ?public void how(){ ?

    ?System.out.println(name +" "+ "Dog....wangwang"); ?}

}

?

創建一個Animal的父類:

package com.cnblogs;

//Animal不寫繼承就是默認繼承Object類. //抽象類不能new.傳入的是子類的實例對象.

public abstract class Animal extends Object{ ?

    public String name;

    public int age; ?

//默認的不帶參的構造器

?public Animal(){ ?

    this("baobao",2);

//this();調用的是下面帶參的Animal的方法 ??

    System.out.println("Animal--->()");

?} ?

//帶參的構造器.給屬性賦初始值

public Animal(String name,int age){ ??

    this.name = name; ?

    this.age = age;??

    System.out.println("Animal--->(name,age)");

?}??

public void walk(){

    System.out.println(name + "---->walk");???

    sleep();

    how();

//this.show 調用的是子類的show()方法,如果子類沒有show()方法.在調用父類的show()方法.??

    this.show();

?} ?

?public void sleep(){

    System.out.println(name + "---->sleep");

?} ?

//抽象方法.

?public abstract void how(); ?

?public void eat(){

    System.out.println(name + "---->Eat");

?} ?

?public void play(){?

    System.out.println(name + "---->Play");

?}

?public void show(){

    System.out.println(name +" "+ "Animal---->show");

}

}

?Main類(包含主函數):

?

package com.cnblogs;

?

public class Main {

?

?public static void main2(String[] args) { ?

?//生成一個cat對象

    Cat cat = new Cat();??

    cat.name ="xiaohua";??

    cat.age = 3;??

    cat.walk();???

    cat.how();???

//生成一個dog對象 ?

    Dog dog = new Dog();??

    dog.name = "xiaomei";???

    dog.age= 3; ?

    dog.walk(); ?

    dog.eat(); ?

    dog.how(); ?

?//調用的是調出來的對象 ?

    Animal animal = new Cat();

    animal.name = "HH";

??//調用的是子類Cat()的how()方法.???

    animal.how();???

    Animal animal2 = new Dog();

    animal2.name = "XX"; ?

?//調用的是子類Dog()的how方法??

    animal2.how();??????

    animal.walk();?????

?//GetMsg方法要求傳入的是子類cat,所以傳入的必須是cat,而不能是animal. ?

    GetMsg(cat); ?

    GetMsg(dog); ?

    GetMsg(animal2);

?} ?

/* public static void GetMsg(Cat cat){

??cat.how(); ?

}*/ ?

//將子類的對象傳入給父類的引用 ? //比上面的傳入單獨的cat靈活,一般使用下面這種方法 ?

public static void GetMsg(Animal animal){

    animal.how();???

}??

/**?*1. new一個對象以后先調用子類Cat的第一個方法,運行super();調用父類Animal的第一個方法???

  *2. 父類中的構造方法執行this();方法,this方法又調用Animal帶參數的方法并輸出;在返回不帶參的構造器執行this();下面的輸出語句 ??

  *3. 在返回子類Cat中執行super();下面的語句,輸出"Cat構造器" ??

  *4. 接著animal.how()調用new出來的對象 cat的how()方法 ??

  *5. 執行子類Cat()方法中的how()方法,并輸出. ??

  *6. 接著在運行how()方法中的super().show;然后調用父類Animal的show()方法.并輸出相應的結果. ?? * */ ?

public static void main(String [] args){??

    Animal animal = new Cat();???

    animal.how(); ? }

}

?

super();調用父類的構造器,方法和屬性.

this();調用該方法的當前對象.

?

今天博客園居然不能插入代碼塊,不知道出什么問題只能自己手寫,寫了半天.看的頭都暈了.

轉載于:https://www.cnblogs.com/jerryho/p/4417474.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375165.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375165.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375165.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html適配Anroid手機

本文全然是翻譯與總結谷歌官方的教程,已確保文檔的正確性。 免得大家被五花八門的其它的資料弄混了,也沒有系統行的學習。 一、設置窗體尺寸和適配屏幕分辨率 谷歌官方文檔提到兩個大的方面。 1.Viewport視圖窗體 這個是html中設置的。主要是設置高度和寬…

算術運算與邏輯運算

邏輯運算又稱布爾運算,取值只有兩個真或假,二進制數1和0在邏輯上可以代表真與假,是與否 算術運算...小學就開始學的了 兩者的區別在與邏輯運算是按位進行的,位與位之間沒有進位或借位.邏輯加法(OR)OR OPRD1,OPRD2 ;OPRD1<--OPRD1 OPRD2 算術加法(ADD)ADD OPRD1,OPRD2 ;O…

Webpack 入門指迷--轉載(題葉)

最近看到這個東西&#xff0c;一頭霧水。看了一些資料了解了Webpack概念&#xff0c;大體是webpack 是一個模塊綁定器&#xff0c;主要目的是在瀏覽器上綁定 JavaScript 文件。 看到題葉寫的一篇介紹&#xff0c;寫的很好&#xff0c;轉載連接http://segmentfault.com/a/119000…

非操作指令NOT

否操作指令NOT(又稱邏輯非運算)01 ;非0等于110 ;非1等于0NOT OPRD ;該指令把操作數OPRD取反然后送回OPRDmov ah,11111111B ;FFHnot ah ;執行后AH0Hmov ah,11110000B ;F0Hnot ah ;執行后AH00001111B 0FH

jquery的動畫學習--jquery權威指南

前面的fadeIn和fadeOut還有fadeTo以及sildeToggle還有sildeUp\sildeDown還有toggle還有show、hide等都經常用&#xff0c;就不再手寫了&#xff0c;需要注意的是fadeTo的合理應用&#xff0c;可以規定opactiy的具體數值&#xff0c;另外各個效果的回調函數可以多用用。$("…

防止Button按鈕重復點擊

背景&#xff1a;在測試中&#xff0c;測試MM總喜歡連續重復點擊Button&#xff0c;如果click事件的處理業務&#xff0c;稍微有些耗時&#xff0c;或者設備反應比較慢時&#xff0c;就會響應2遍處理&#xff0c;導致錯誤的現象出現。 前提&#xff1a;click事件的處理業務&…

8086交換指令XCHG

XCHG OPRD1,OPRD2;實現OPRD1與OPRD2之間數據交換;OPRD1,OPRD2同時是字節或字操作數, MOV AX,1 MOV BX,2 XCHG AX,BX ;執行后AX2,BX1

[傅里葉變換及其應用學習筆記] 二十四. 級聯,脈沖響應

我們上節課學習了 在離散有限維空間中&#xff0c;任何線性系統都是通過矩陣間的相乘得到的在連續無限維空間中&#xff0c;任何線性系統都是通過對核函數的積分得到的脈沖響應&#xff08;impulse response&#xff09; 級聯線性系統&#xff08;Cascading linear system&…

WPF如何實現TreeView節點重命名

我們經常看到一些軟件比如酷狗音樂&#xff0c;在對列表右鍵進行重命名的時候&#xff0c;當前列表會泛白并且進入可編輯狀態&#xff0c;當我們更改完成后就會并進入非編輯狀態&#xff0c;這些具體是怎么實現的呢&#xff1f;下面的方法也許會提供一些思路&#xff0c;下面的…

8086地址傳送指令LEA

LEA REG,OPRD ;操作數OPRD必須是一個存儲器操作數 LEA AX,IDATA ;把IDATA的偏移地址傳送到AX寄存器中DATA SEGMENTIDATA DW 1,2,3,4 DATA ENDS CODE SEGEMNT BEG:MOV AX,OFFSET IDATA ;AXIDATA的偏移地址LEA AX,IDATA ;AXIDATA的偏移地址LEA AX,DS:[IDATA] ;把ds:[IDA…

Shell --- 批量修改文件后綴腳本

for f in *.$1; dofilenamebasename $fmv $f "${filename%.*}".$2; done; Usage:&#xff1a; rename suffix rename_suffix eg: rename dat txt > ls > a.dat > rename dat txt > ls > a.txt 轉載于:https://www.cnblogs.com/RookieCoder/p/5140265.…

8086標志操作指令

標號傳送指令LAHF 把FLAG低八位送入AH。不影響FLAG的任何位LAHF ;把CF,PF,AF,ZF,SF送入AH的相應位即0,2,4,6,7位SAHF 把AH送入FLAG低八位。根據AH中的內容FLAG的低八位受到影響,高位不受影響MOV AH,11111111B SAHF ;(執行后CF,PF,AF,ZF,SF等于1)PUSHF 把FLAG壓入棧中。不影…

最大子序列和

一、遍歷所有可能情況 (1234...N)所有可能子序列如下&#xff1a; 1&#xff1b;12&#xff1b;123...... 2&#xff1b;23&#xff1b;234...... ...... N 共N趟&#xff0c;沒趟可能的情況由N&#xff0c;N-1...&#xff0c;1依次遞減。 時間復雜度O(N3)的算法&#xff1a; i…

!--注釋--和%--注釋--%有什么區別

轉載&#xff1a;版權所有&#xff1a;基礎軟件。作者郵箱&#xff1a;s.j.l.studiohotmail.com&#xff0c;sun.j.l.studiogmail.com。本文首發于 http://www.cnblogs.com/FoundationSoft。文章轉載請保持此版權信息并注明出處。 使用ASP.NET編輯頁面時&#xff0c;有兩種注釋…

團隊開發——用戶需求調研報告

用戶需求調研報告 項目名稱&#xff1a; 躲避小球 項目編號&#xff1a;001 調研主題&#xff1a; 用戶需求 訪談時間&#xff1a;2015.4.10 調研地點&#xff1a; 石家莊鐵道大學圖書館 訪談部門&#xff1a; 三個人行 參與人員&#xff1a; 林彥汝 1. 訪談目的 1、讓用…

8086地址傳送指令LDS,LES

LDS REG,OPRE;REG是一個16位寄存器,OPRD是一個存儲器操作數,為雙字項,高16位送入DS,低16位送入REG LDS BX,[SI](ds:si取得存儲器中32位(雙字),高16位作為段值送入DS中,低十六位送入指定的BX寄存器中)data segmentidata dd 12345678H data ends code segment assume cs:code,ds:…

設計模式(十五):解釋器模式

一、定義 在設定環境中&#xff0c;定義一種規則或者語法&#xff0c;通過解釋器來解釋規則或者語法的含義. 二、實例&#xff1a;將 二十一 —> 21 2.1 設定我們的環境 Context public class Context{public string Input { get; set; }public int Output { get; se…

8086地址傳送指令LEA,LDS,LES

LEA BX,[SI] ;BX<--DS:[SI]內存單元的偏移地址,與該單元中的數據無關 LDS BX,[SI] ;BX<--DS:[si]內存單元中的數據的低16位,DS<--內存單元中數據的高16位 LES BX,[SI] ;BX<--DS:[SI] ,ES<--DS:[SI2] 顯然LDS和LES的操作數是32位的(兩個字 四個字節 32位) 寫個…

MySQL 5.7.10 免安裝配置

# 配置環境&#xff1a;windows 64bit # 安裝版本&#xff1a;mysql-5.7.10-win32&#xff08;zip archive版本&#xff09; 1. ZIP Archive版是免安裝的&#xff0c;只需把mysql-5.7.10-win32.zip解壓到安裝目錄即可。 2. 在D:\Program Files\mysql-5.7.10-win32文件夾下新建配…

Cacti安裝教程

CentOS 6.0架設流量監控及集中日志系統第一章、cacti的安裝1、 系統的基本設置2、 設置主機名3、 [rootlocalhost ~]# vi /etc/sysconfig/network4、 [rootlocalhost ~]# exit5、 重新登陸6、 [rootGZ-Cacti ~]#7、 安裝screen后臺運行程序yum -y install screen8、 安裝優秀的…