王 第潜艇三天 引用类型 继承
面向?qū)ο蟮谌?#xff1a;
潛艇游戲第一天:
設(shè)計(jì)6個(gè)類,設(shè)計(jì)World類并測(cè)試
潛艇游戲第二天:
給6個(gè)類添加構(gòu)造方法,并測(cè)試
潛艇游戲第三天:
設(shè)計(jì)偵察潛艇數(shù)組、魚雷潛艇數(shù)組、水雷潛艇數(shù)組、水雷數(shù)組、炸彈數(shù)組,并測(cè)試
設(shè)計(jì)SeaObject超類,6個(gè)類繼承SeaObject
給SeaObject設(shè)計(jì)兩個(gè)構(gòu)造方法,6個(gè)派生類分別調(diào)用
將偵察潛艇數(shù)組、魚雷潛艇數(shù)組、水雷潛艇數(shù)組統(tǒng)一組合為SeaObject數(shù)組,并測(cè)試
回顧:
構(gòu)造方法:構(gòu)造函數(shù)、構(gòu)造器、構(gòu)建器--------復(fù)用給成員變量賦值
-
作用:給成員變量賦初值
-
與類同名,沒有返回值類型(連void)
-
創(chuàng)建對(duì)象時(shí)被自動(dòng)調(diào)用
-
若自己不寫構(gòu)造,默認(rèn)一個(gè)無參構(gòu)造,若自己寫了構(gòu)造,則不再默認(rèn)提供
-
可以重載
this:指代當(dāng)前對(duì)象,哪個(gè)對(duì)象調(diào)用方法它指的就是哪個(gè)對(duì)象
this的用法:
this.成員變量名-------------------------訪問成員變量
當(dāng)成員變量與局部變量同名時(shí),若想訪問成員變量則this不能省略
null:表示空,沒有指向任何對(duì)象
若引用的值為null,則該引用不能進(jìn)行任何操作了,若操作則發(fā)生 NullPointerException空指針異常
引用類型數(shù)組:
Bomb[] bs = new Bomb[3]; bs[0] = new Bomb(100,200); //1)new bs[1] = new Bomb(200,300); bs[2] = new Bomb(300,400); System.out.println(bs[0].width); //2)訪問屬性需打點(diǎn)筆記:
引用類型數(shù)組:
1)Bomb[] bs = new Bomb[3];bs[0] = new Bomb(100,200);bs[1] = new Bomb(200,300);bs[2] = new Bomb(300,400);System.out.println(bs[0].width); //輸出第1個(gè)炸彈的寬bs[1].x = 250; //修改第2個(gè)炸彈的x為250bs[2].move(); //第3個(gè)炸彈移動(dòng)for(int i=0;i<bs.length;i++){ //遍歷所有子彈System.out.println(bs[i].height); //輸出每個(gè)子彈的高bs[i].move(); //每個(gè)子彈移動(dòng)} 2)Bomb[] bs = new Bomb[]{ //了解new Bomb(100,200),new Bomb(200,300),new Bomb(300,400)};繼承:
-
作用:代碼復(fù)用
-
通過extends來實(shí)現(xiàn)繼承
-
超類/父類:共有的屬性和行為
派生類/子類:特有的屬性和行為
-
派生類既能訪問自己的,也能訪問超類的,但超類不能訪問派生類的
-
一個(gè)超類可以有多個(gè)派生類
一個(gè)派生類只能有一個(gè)超類-----------單一繼承
-
具有傳遞性
-
java規(guī)定:構(gòu)造派生類之前必須先構(gòu)造超類
-
派生類的構(gòu)造方法中若沒有調(diào)用超類的構(gòu)造方法,則默認(rèn)super()調(diào)用超類的無參構(gòu)造方法
-
派生類的構(gòu)造方法中若自己調(diào)用了超類的構(gòu)造方法,則不再默認(rèn)提供
super()調(diào)用超類構(gòu)造方法,必須位于派生類構(gòu)造方法的第一行
//super的演示 public class SuperDemo {public static void main(String[] args) {Boo o = new Boo();} } class Coo{Coo(int a){} } class Doo extends Coo{Doo(){super(5); //調(diào)用超類的有參構(gòu)造}/*//如下代碼為默認(rèn)的:Doo(){super();}*/ } ? class Aoo{Aoo(){System.out.println("超類構(gòu)造");} } class Boo extends Aoo{Boo(){//super(); //默認(rèn)的,調(diào)用超類的無參構(gòu)造System.out.println("派生類構(gòu)造");} } -
super:指代當(dāng)前對(duì)象的超類對(duì)象
super的用法:
-
super.成員變量名----------------------訪問超類的成員變量(了解)
-
super.方法名()---------------------------調(diào)用超類的方法----------明天講
-
super()-------------------------------------調(diào)用超類的構(gòu)造方法
向上造型:---------------------代碼復(fù)用
-
超類型的引用指向了派生類的對(duì)象
-
能點(diǎn)出來什么,看引用的類型-----------這是規(guī)定,記住就OK了
精華筆記:
引用類型數(shù)組:
繼承:
-
作用:代碼復(fù)用
-
通過extends來實(shí)現(xiàn)繼承
-
超類/父類:共有的屬性和行為
派生類/子類:特有的屬性和行為
-
派生類既能訪問自己的,也能訪問超類的,但超類不能訪問派生類的
-
一個(gè)超類可以有多個(gè)派生類
一個(gè)派生類只能有一個(gè)超類-----------單一繼承
-
具有傳遞性
-
java規(guī)定:構(gòu)造派生類之前必須先構(gòu)造超類
-
派生類的構(gòu)造方法中若沒有調(diào)用超類的構(gòu)造方法,則默認(rèn)super()調(diào)用超類的無參構(gòu)造方法
-
派生類的構(gòu)造方法中若自己調(diào)用了超類的構(gòu)造方法,則不再默認(rèn)提供
super()調(diào)用超類構(gòu)造方法,必須位于派生類構(gòu)造方法的第一行
-
super:指代當(dāng)前對(duì)象的超類對(duì)象
super的用法:
-
super.成員變量名----------------------訪問超類的成員變量(了解)
-
super.方法名()---------------------------調(diào)用超類的方法----------明天講
-
super()-------------------------------------調(diào)用超類的構(gòu)造方法
向上造型:---------------------代碼復(fù)用
-
超類型的引用指向了派生類的對(duì)象
-
能點(diǎn)出來什么,看引用的類型-----------這是規(guī)定,記住就OK了
補(bǔ)充:
繼承意味著代碼雖然我沒有寫,但也屬于我,只是沒有寫在一起而已
泛化:將共有的抽出來的過程,泛化是設(shè)計(jì)層面的概念,從代碼實(shí)現(xiàn)層面來說咱們就是繼承,泛化就是繼承
繼承要符合is a(是一個(gè))的關(guān)系
總結(jié)
以上是生活随笔為你收集整理的王 第潜艇三天 引用类型 继承的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Conway生命游戏
- 下一篇: Revit API:找到轮廓族的路径