Day12_12

一.面向對象的四大支柱:

  • 1.抽象:定義一個類的過程就是抽象的過程(數據抽象、行為抽象),
  •  通過抽象我們可以將數據和操作數據的方法以“對象”的概念綁定在一起;
    
  •  抽象的過程是一個仁者見仁智者見智的過程,對同一個對象進行抽象可能會有不同的結果;
    
  • 2.封裝:隱藏一切可以隱藏的實現細節,只向外界提供最簡單的編程接口;
  • 3.繼承:從一個已有的類創建一個新類的過程,提供繼承信息的叫父類(超類、基類),
  •  得到繼承信息的叫子類(派生類、衍生類),繼承是是現代碼復用的一種手段
    
  • 4.多態: 同樣的引用類型調用了相同的方法做了不同的事情
  •      -實現多態的兩個關鍵步驟:1方法重寫(注意與方法重載的區別),2對象造型
    

二.通常程序員能在內存里操控的三塊區域

  • 棧---快、小-臨時變量/局部變量(方法里面的變量)
  • 堆---稍慢、特別大(可調整,理論上可以調到物理內存的大小)-對象
  • 方法區---代碼,常量

三.繼承-extends

1.多態的使用

  • 同樣的類型調用相同的方法(發出同樣的消息)但是做了不一樣的事情-這就是多態(polymorphism)
  • 如何實現多態:
    1.方法重寫-子類在繼承父類得過程中對父類的方法給出自己的實現版本
    2.對象造型-用父類型的變量保存子類的對象

2.枚舉的定義

  • enum

3.instaanceof運算符

  • instanceof是一種運算符,可以判斷對象是不是某種類型,結果產生的是布爾值
  • 該運算符是在程序運行時判斷對象的類型-RTTI

4.抽象類和抽象方法-abstract

  • 抽象方法:
    1.一個方法暫時無法給出實現,那么可將其聲明為抽象方法;用abstract關鍵字修飾,且沒有方法體
    2.一個類如果包含抽象方法(說明該類不完整),那么該類也必須要聲明為抽象類
    3.抽象類不能實例化(不能創造抽象類的對象)
    4.抽象類是專門留給其他類去繼承的類

5.方法重寫(注意與方法重載的區別)

@Override
方法重寫(置換,覆蓋,覆寫),父類有這個方法可能實現了,可能沒實現
子類把父類的這個方法重新實現一次(給出自己的版本)

  • 重載:同一個類中有同名的方法,只要參數列表不相同就可以共存-overload
  • 重寫:子類在繼承父類當中對父類已有的方法給出新的實現版本-override

6.四種訪問修飾符

java四種訪問修飾符:private<default<protectd<public

  • 1.private:同類
  • 2.default:同類,同包
  • 3.protected:同類,同包,子類
  • 4.public:同類,同包,子類,不同包
package Day12_12_01;
public class PetTest
{
        public static void main(String[] args)
    {
        //temp在棧上,它保存了堆上的Cat對象的地址
        //通過temp就可以找到堆上的對應的Cat對象并給對象發消息
        //所以我們通常把對象類型的變量稱為對象的引用
        //java中的類型分為兩大類:
        //  1.基本數據類型(8種)和枚舉類型
        //  2.引用類型
        Pet temp=new Cat("花花", Sex.FEMLE, "藍色");
        
        Pet[] petsArray=
            {
                    new Dog("旺財", Sex.MALE, true),
                    new Cat("咪咪", Sex.FEMLE, "黃色"),
                    new Dog("歡歡", Sex.FEMLE, false),
                    new Pig("發財", Sex.FEMLE,100)
            };
        
        
        for(Pet pet:petsArray)
        {
            pet.eat();
            pet.play("球球");
            
            
            pet.makeVoice();
            
            
            if(pet instanceof Dog)
            {
                ((Dog) pet).keepTheDoor();
            }else if(pet instanceof Cat){
                ((Cat) pet).climbUpTheTree();
            }else if(pet instanceof Pig){
                System.out.println(pet.getNickname()+"重"+((Pig) pet).showWeight()+"公斤");
            }           
        }
    }
}
  • 父類
package Day12_12_01;
/**
 * 寵物
 * @author YY
 *
 */
public abstract class Pet
{
    private String nickname;
    private Sex sex;
/**
 *構造器
 * @param nickname
 * @param sex
 */
    public Pet(String nickname, Sex sex)
    {
        this.nickname = nickname;
        this.sex = sex;
    }
/**
 *得到名字
 * @return
 */
    public String getNickname()
    {
        return nickname;
    }
/**
 * 得到性別
 * @return
 */
    public String  getSex()
    {
        return sex==Sex.MALE?"公":"母";
    }
/**
 * 吃東西
 */
    public void eat()
    {
        System.out.println(nickname + "正在吃東西");
    }
/**
 * 玩耍
 * @param thing 玩的東西
 */
    public void play(String thing)
    {
        System.out.println(nickname + "正在玩" + thing);
    }
    
/**
 * 發出聲音
 */
    
    public abstract void makeVoice();
    
}
  • 子類-Cat
package Day12_12_01;

public class Cat extends Pet
{
    private String colorOfEye;
    
    public Cat(String nickname, Sex sex,String colorOfEye)
    {
        super(nickname, sex);
        this.colorOfEye=colorOfEye;
    }
    
    public String getColorOfEye()
    {
        return colorOfEye;
    }
    
    public void climbUpTheTree()
    {
        //this可以換成super,或者去掉 
        System.out.println(this.getNickname()+"正在爬樹");
    }

    @Override
    public void makeVoice()
    {
        System.out.println(this.getNickname()+"喵喵叫");
    }
    
    

}
  • 子類Dog
package Day12_12_01;

/**
 * 狗類
 * 
 * @author YY
 *
 */
public class Dog extends Pet
{
    private boolean large;

    /**
     * 構造器
     * 
     * @param nickname
     * @param sex
     * @param large
     */
    public Dog(String nickname, Sex sex, boolean large)
    {
        super(nickname, sex);
        this.large = large;
    }

    /**
     * large的訪問器
     * 
     * @return
     */
    // 布爾類型的訪問器前綴不是get,而是is;
    public boolean isLarge()
    {
        return large;
    }

    /**
     * 看
     */
    public void keepTheDoor()
    {
        System.out.println(this.getNickname() + "正在看門");
    }

    public void makeVoice()
    {
        System.out.println(this.getNickname()+"汪汪叫");
    }

}
  • 子類Pig
package Day12_12_01;

public class Pig extends Pet
{
    private int weight;
    
    public Pig(String nickname, Sex sex,int weight)
    {
        super(nickname, sex);   
        this.weight=weight;
    }
    
    public int showWeight()
    {
        return this.weight;
    }
    @Override
    public void makeVoice()
    {
        System.out.println(this.getNickname()+"豬豬叫");
    }

}
  • 枚舉的定義
package Day12_12_01;

public enum Sex
{
    MALE,FEMLE
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容

  • 本文出自 Eddy Wiki ,轉載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 1,224評論 0 5
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,737評論 18 399
  • 1 面向對象No6 面向對象 OO Object Oriented 編程時以對象為單元,封裝數據和邏輯,以此提...
    征程_Journey閱讀 1,173評論 0 2
  • 這字,可以無視了,,,,,,看這字的筆法可以說是我從來沒寫過字
    在此皆我兒閱讀 240評論 0 2
  • 總有一天,要像你一樣,篤定的感謝自己 杭州的冬天,今年似乎格外冷一些。和學員伙伴們聊的頭腦悶悶的走出酒店,嗖嗖的冷...
    風四娘Rum閱讀 292評論 2 2