Java面向?qū)ο?/h1>

Java 繼承

所有Java的類均是由java.lang.Object類繼承而來的埂奈,所以O(shè)bject是所有類的祖先類铅祸,而除了Object外嗦玖,所有類必須有一個(gè)父類乒验。java只支持單繼承愚隧,多繼承用接口來實(shí)現(xiàn)。python支持多繼承

extends關(guān)鍵字:通過使用關(guān)鍵字extends锻全,子類可以繼承父類的除private屬性外所有的屬性。

通過使用instanceof 操作符录煤,能夠確定子類是不是一個(gè)父類

Implements關(guān)鍵字:使用在類繼承接口的情況下鳄厌, 這種情況不能使用關(guān)鍵字extends

Java 重寫

重寫是子類對(duì)父類的允許訪問的方法的實(shí)現(xiàn)過程進(jìn)行重新編寫!返回值和形參都不能改變妈踊。即外殼不變了嚎,核心重寫。重寫的好處在于子類可以根據(jù)需要廊营,定義特定于自己的行為歪泳。也就是說子類能夠根據(jù)需要實(shí)現(xiàn)父類的方法。

class Animal{
   public void move(){
      System.out.println("動(dòng)物可以移動(dòng)");
   }
}
class Dog extends Animal{
   public void move(){
      System.out.println("狗可以跑和走");
   }
}
public class TestDog{
   public static void main(String args[]){
      Animal a = new Animal(); // Animal 對(duì)象
      Animal b = new Dog(); // Dog 對(duì)象
      a.move();// 執(zhí)行 Animal 類的方法
      b.move();//執(zhí)行 Dog 類的方法
   }
}

子類中重寫了父類的方法后又想再調(diào)用父類的這個(gè)方法露筒,用super關(guān)鍵字

Java 重載

重載(overloading) 是在一個(gè)類里面呐伞,方法名字相同,而參數(shù)不同慎式。返回類型呢伶氢?可以相同也可以不同。每個(gè)重載的方法(或者構(gòu)造函數(shù))都必須有一個(gè)獨(dú)一無二的參數(shù)類型列表瘪吏。

class Numers{
    public Numers(){
        
    }
    public void count(int a,int b){
        System.out.println("there are two numers");
    }
    public void count(int a){
        System.out.println("there is one number");
    }
    
}
public class JichenTest {
    public static void main(String args[])
    {
        Numers aNumers =  new Numers();
        aNumers.count(1,2);
        aNumers.count(1);
    }
}

output:

there are two numers
there is one number

重寫與重載之間的區(qū)別

區(qū)別點(diǎn) 重載方法 重寫方法
參數(shù)列表 必須修改 一定不能修改
返回類型 可以修改 一定不能修改
異常 可以修改 可以減少或刪除癣防,一定不能拋出新的或者更廣的異常
訪問 可以修改 一定不能做更嚴(yán)格的限制(可以降低限制

Java 多態(tài)

多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。多態(tài)性是對(duì)象多種表現(xiàn)形式的體現(xiàn)掌眠。

public interface Vegetarian{}
public class Animal{}
public class Deer extends Animal implements Vegetarian{}

因?yàn)镈eer類具有多重繼承蕾盯,所以它具有多態(tài)性。以上實(shí)例解析如下:

  • 一個(gè) Deer IS-A(是一個(gè)) Animal
  • 一個(gè) Deer IS-A(是一個(gè)) Vegetarian
  • 一個(gè) Deer IS-A(是一個(gè)) Deer
  • 一個(gè) Deer IS-A(是一個(gè))Object

虛方法

class Employee{
    String name;
    public Employee(String name){
        this.name =name;
    }
    public void check(){
        System.out.println("this is an Employee class");
    }
}
class Salary extends Employee{
    public Salary(String name){
        super(name);
    }
    public void check(){
        System.out.println("this s salary class");
    }
}
public class Xuways {
    public static void main(String args[]){
        Salary asalary = new Salary("salarytest");
        Employee  aEmployee = new Salary("employeetest");
        asalary.check();
        aEmployee.check();
    }
}

雖然 aEmployee用的是Employee的引用蓝丙,但是但new 的是salary類型级遭, 編譯的時(shí)候望拖,編譯器使用Employee中check()方法驗(yàn)證該語句,但是在運(yùn)行的時(shí)候装畅,java虛擬機(jī)調(diào)用的Salaryde 的check( )方法

Java 抽象類

抽象類:

在面向?qū)ο蟮母拍钪锌坑椋械膶?duì)象都是通過類來描繪的,但是反過來掠兄,并不是所有的類都是用來描繪對(duì)象的像云,如果一個(gè)類中沒有包含足夠的信息來描繪一個(gè)具體的對(duì)象,這樣的類就是抽象類蚂夕。

抽象類除了不能實(shí)例化對(duì)象之外迅诬,類的其它功能依然存在,成員變量婿牍、成員方法和構(gòu)造方法的訪問方式和普通類一樣侈贷。

由于抽象類不能直接實(shí)例化對(duì)象,所以抽象類必須被繼承等脂,才能被使用俏蛮。也是因?yàn)檫@個(gè)原因,通常在設(shè)計(jì)階段決定要不要設(shè)計(jì)抽象類上遥。父類包含了子類集合的常見的方法搏屑,但是由于父類本身是抽象的,所以不能使用這些方法粉楚。

抽象方法

如果你想設(shè)計(jì)這樣一個(gè)類辣恋,該類包含一個(gè)特別的成員方法,該方法的具體實(shí)現(xiàn)由它的子類確定模软,那么你可以在父類中聲明該方法為抽象方法伟骨。

Abstract關(guān)鍵字同樣可以用來聲明抽象方法,抽象方法只包含一個(gè)方法名燃异,而沒有方法體携狭。

抽象方法沒有定義,方法名后面直接跟一個(gè)分號(hào)特铝,而不是花括號(hào)暑中。

public abstract class Employee
{
   private String name;
   private String address;
   private int number;  
   public abstract double computePay();   
   //其余代碼
 }

如果一個(gè)類包含了抽象方法,那么該類必須是抽象類

繼承抽象方法的子類必須重寫父類的抽象方法鲫剿,否則該子類也必須聲明為抽象類

Java 封裝

一個(gè)類中定義的變量為了不讓外部隨意訪問和修改鳄逾,一般都會(huì)對(duì)該變量設(shè)置get和set方法,稱之為封裝

Java 接口

是個(gè)抽象類型灵莲,是抽象方法的集合雕凹,通常用interface來聲明。一個(gè)類通過繼承接口的方式來繼承接口的抽象方法。接口無法被實(shí)例化枚抵,但可以被實(shí)現(xiàn)线欲。接口的類型和其中包含的方法都是抽象的,默認(rèn)是abstract汽摹,這個(gè)關(guān)鍵字可省略李丰。

接口并不是類,編寫接口的方式和類很相似逼泣,但是它們屬于不同的概念趴泌。類描述對(duì)象的屬性和方法。接口則包含類要實(shí)現(xiàn)的方法拉庶。

除非實(shí)現(xiàn)接口的類是抽象類嗜憔,否則該類要定義接口中的所有方法。

interface Animalactions{
    public void move();
    public void bark();
}
class Animal implements Animalactions{
    public void move(){
        System.out.println("this is move");
    }
    public void bark(){
        System.out.println("this is bark");
    }
}
public class InterfaceTest {
    public InterfaceTest(){     
    }
    public static void main(String args[]){
        Animal aanimal = new Animal();
        aanimal.bark();
        System.out.println(aanimal instanceof Animalactions);
    }   
}

output:

this is bark
true

接口的繼承:一個(gè)接口繼承另一個(gè)接口氏仗,可以多繼承吉捶,用關(guān)鍵字extend

標(biāo)記接口:沒有任何方法的接口被稱為標(biāo)記接口

Java包

為了更好地組織類,Java提供了包機(jī)制皆尔,用于區(qū)別類名的命名空間

包的作用:

  • 1 把功能相似或相關(guān)的類或接口組織在同一個(gè)包中呐舔,方便類的查找和使用。
  • 2 如同文件夾一樣慷蠕,包也采用了樹形目錄的存儲(chǔ)方式滋早。同一個(gè)包中的類名字是不同的,不同的包中的類的名字是可以相同的砌们,當(dāng)同時(shí)調(diào)用兩個(gè)不同包中相同類名的類時(shí),應(yīng)該加上包名加以區(qū)別搁进。因此浪感,包可以避免名字沖突。
  • 3 包也限定了訪問權(quán)限饼问,擁有包訪問權(quán)限的類才能訪問某個(gè)包中的類影兽。

如果調(diào)用的類不在包中,就要使用全名(xxpackage.xx)或者導(dǎo)入該class(import xxpackage.xxx)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末莱革,一起剝皮案震驚了整個(gè)濱河市峻堰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盅视,老刑警劉巖捐名,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異闹击,居然都是意外死亡镶蹋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贺归,“玉大人淆两,你說我怎么就攤上這事》骱ǎ” “怎么了秋冰?”我有些...
    開封第一講書人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)婶熬。 經(jīng)常有香客問我剑勾,道長(zhǎng),這世上最難降的妖魔是什么尸诽? 我笑而不...
    開封第一講書人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任甥材,我火速辦了婚禮,結(jié)果婚禮上性含,老公的妹妹穿的比我還像新娘洲赵。我一直安慰自己,他們只是感情好商蕴,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開白布叠萍。 她就那樣靜靜地躺著,像睡著了一般绪商。 火紅的嫁衣襯著肌膚如雪苛谷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,807評(píng)論 1 314
  • 那天格郁,我揣著相機(jī)與錄音腹殿,去河邊找鬼。 笑死例书,一個(gè)胖子當(dāng)著我的面吹牛锣尉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播决采,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼自沧,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了树瞭?” 一聲冷哼從身側(cè)響起拇厢,我...
    開封第一講書人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晒喷,沒想到半個(gè)月后孝偎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厨埋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年邪媳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捐顷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雨效,死狀恐怖迅涮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情徽龟,我是刑警寧澤叮姑,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站据悔,受9級(jí)特大地震影響传透,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜极颓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一朱盐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧菠隆,春花似錦兵琳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至破衔,卻和暖如春清女,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晰筛。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工嫡丙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人读第。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓迄沫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親卦方。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

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