面向?qū)ο蠹夹g(shù)

面向?qū)ο笥心男┨卣鳎?/h2>

抽象:包括過程抽象和數(shù)據(jù)抽象。
繼承:允許和鼓勵類的重用厉斟。
封裝:類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作蓖谢,對不可信的進行信息隱藏。
多態(tài):包括參數(shù)化多態(tài)和包含多態(tài)员淫。具有靈活、抽象击敌、行為共享介返、代碼共享等優(yōu)勢,很好地解決了應(yīng)用程序同名的問題沃斤,

面對對象開發(fā)方式的優(yōu)點

1.較高的開發(fā)效率圣蝎。
2.保證軟件的魯棒性。
3.保證軟件的高可維護性衡瓶。

組合和繼承

繼承是一種is-a的關(guān)系徘公,組合是一種has-a的關(guān)系,比如car is vehicle哮针,car has tire关面。在Java語言中坦袍,能使用組合就盡量不使用繼承,除非是“is - a”關(guān)系缭裆。

多態(tài)實現(xiàn)的機制是什么事格?

Java中提供了兩種用于多態(tài)的機制犁享。編譯時多態(tài)和運行時多態(tài)脸侥。編譯時多態(tài)是通過方法的重載實現(xiàn)的独柑,運行時多態(tài)是通過方法的覆蓋(子類覆蓋父類的方法)實現(xiàn)的。
此外缝其,只有類的方法才有多態(tài)的概念挎塌,類中成員變量沒有多態(tài)的概念。

public class Test {
    public static void main(String[] args) {
        A a = new B();
        System.out.println(a.i);
    }
}

class A {
    public int i = 1;
}
class B extends A {
    public int i = 2;
}

程序運行結(jié)果為1内边。

抽象類與接口有什么異同榴都?

相同點

1.都不能被實例化。

  1. 接口的實現(xiàn)類或抽象類的子類都只有實現(xiàn)了借口或抽象類中的方法后才能被實例化漠其。
不同點

1.Java 8 之前嘴高,接口只有定義,其方法不能再接口中實現(xiàn)和屎,而抽象類可以有定義與實現(xiàn)拴驮,即其方法可以在抽象類中實現(xiàn)。
java 8后柴信,接口中用defualt關(guān)鍵字修飾的方法可以被實現(xiàn)套啤,實現(xiàn)該接口的類可以直接使用該方法。

interface C {
    default void getc(){
        System.out.println("C");
    }
}
  1. 一個類可以實現(xiàn)多個接口随常,但是只能繼承一個抽象類潜沦。
  2. 接口“has - a”,抽象類“is - a”绪氛。
  3. 接口中的成員變量默認為public static final唆鸡,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員,而且枣察,必須給其賦初值喇闸。其所有的成員方法都是public、abstract的询件,而且也只能被這兩個關(guān)鍵詞修飾。
    而抽象類可以有自己的數(shù)據(jù)成員變量唆樊,也可以有非抽象的成員方法宛琅。而且抽象類中的成員變量默認為defualt(本包可見),當然也可以被定義成public,protected,private逗旁,這些成員變量可以在子類中重新定義嘿辟,也可以被重新賦值舆瘪。抽象類中的抽象方法(其前有abstract修飾)不能private,static,synchronized,native等訪問修飾符修飾,同時方法必須以分好結(jié)尾红伦,并且不帶花括號英古。

此外接口可以繼承(extends接口,抽象類可以實現(xiàn)接口昙读,抽象類也可以繼承具體類召调。抽象類也可以有靜態(tài)的main方法。

內(nèi)部類有哪些

主要有以下4種:

1. 靜態(tài)內(nèi)部類
class outerClass {
    static class  innerClass{}
}

靜態(tài)內(nèi)部類是指被聲明為static的內(nèi)部類蛮浑,它可以不依賴外部類實例而被實例化唠叛,不能與外部類有相同的名字,不能訪問外部類的普通成員變量沮稚,只能訪問外部類中的靜態(tài)變量和靜態(tài)方法(包括私有類型)艺沼。

2. 成員內(nèi)部類
class outerClass {
    class  innerClass{}
}

它可以自由地引用外部類的屬性和方法,但是它與一個實例綁定在一起蕴掏,不可以定義靜態(tài)的屬性和方法障般。非靜態(tài)內(nèi)部類不能有靜態(tài)成員(包括變量和方法)

3. 局部內(nèi)部類
class outerClass {
    public void memberFunction {
        class  innerClass{}
    }
}

局部內(nèi)部類是指定義在一個代碼塊內(nèi)的類盛杰,它的作用范圍是在其所在代碼塊挽荡。**局部內(nèi)部類像局部變量一樣,不能被public,protected,private,static修飾饶唤,只能訪問方法中定義為final的局部變量徐伐。

4.匿名內(nèi)部類
public class MyFrame extends Frame {
    public MyFrame(){
        addWindowListener(new WindowAdapter() { //匿名內(nèi)部類
            @Override
            public void windowClosing(WindowEvent e) {
                dispose();
                System.exit(0);
            }
        });
    }
}

在使用匿名內(nèi)部類時,需要牢記以下幾個原則:

  1. 不能有構(gòu)造函數(shù)募狂。
  2. 不能定義靜態(tài)成員办素、方法和類。
  3. 不能是public,protected,private,static祸穷。
  4. 只能創(chuàng)建匿名內(nèi)部類的一個實例性穿。
  5. 一個匿名內(nèi)部類一定是在new后面,這個匿名類必須繼承一個父類或者實現(xiàn)一個接口雷滚。
  6. 因為匿名內(nèi)部類為局部內(nèi)部類需曾,所以局部內(nèi)部類的所有限制都對其生效。

如何獲取父類的類名祈远?

可以使用getClass().getName()方法來獲取類名呆万,但是不能調(diào)用super.getClass()來獲取父類的類名,因為getClass()方法在Object類中被定義為final和native车份,所以不論是this.getClass()還是super.getClass()谋减,調(diào)用的都是Object類中的getClass()方法,該方法返回此Object的運行時類扫沼。
可以通過Java的反射機制出爹,使用getClass().getSuperclass().getName()庄吼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市严就,隨后出現(xiàn)的幾起案子总寻,更是在濱河造成了極大的恐慌,老刑警劉巖梢为,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渐行,死亡現(xiàn)場離奇詭異,居然都是意外死亡抖誉,警方通過查閱死者的電腦和手機殊轴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袒炉,“玉大人旁理,你說我怎么就攤上這事∥掖牛” “怎么了孽文?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長夺艰。 經(jīng)常有香客問我芋哭,道長,這世上最難降的妖魔是什么郁副? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任减牺,我火速辦了婚禮,結(jié)果婚禮上存谎,老公的妹妹穿的比我還像新娘拔疚。我一直安慰自己,他們只是感情好既荚,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布稚失。 她就那樣靜靜地躺著,像睡著了一般恰聘。 火紅的嫁衣襯著肌膚如雪句各。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天晴叨,我揣著相機與錄音凿宾,去河邊找鬼。 笑死兼蕊,一個胖子當著我的面吹牛菌湃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播遍略,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惧所,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绪杏?” 一聲冷哼從身側(cè)響起下愈,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蕾久,沒想到半個月后势似,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡僧著,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年履因,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盹愚。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡栅迄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出皆怕,到底是詐尸還是另有隱情毅舆,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布愈腾,位于F島的核電站憋活,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏虱黄。R本人自食惡果不足惜悦即,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望橱乱。 院中可真熱鬧辜梳,春花似錦、人聲如沸仅醇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽析二。三九已至粉洼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叶摄,已是汗流浹背属韧。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蛤吓,地道東北人宵喂。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像会傲,于是被迫代替她去往敵國和親锅棕。 傳聞我的和親對象是個殘疾皇子拙泽,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 面向?qū)ο蠹夹g(shù)技術(shù)盲點 1、到底什么是面向?qū)ο?面向?qū)ο?對象+分類+繼承+用消息通信 OOP=Object+Cla...
    無羨愛詩詩閱讀 566評論 1 5
  • 在一個方法內(nèi)部定義的變量都存儲在棧中裸燎,當這個函數(shù)運行結(jié)束后顾瞻,其對應(yīng)的棧就會被回收,此時德绿,在其方法體中定義的變量將不...
    Y了個J閱讀 4,418評論 1 14
  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,970評論 6 13
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,101評論 1 32
  • 考察重點面向?qū)ο蠛苫纭ML、設(shè)計模式等內(nèi)容 uml統(tǒng)一建模語言 (1)靜態(tài)模型(系統(tǒng)結(jié)構(gòu))——用例圖移稳、類圖蕴纳、對象圖、...
    米_8d62閱讀 283評論 0 0