深入理解java抽象與介面

2021-08-13 09:26:02 字數 2863 閱讀 9725

1,abstract 修飾類  抽象類

2,abstract 修飾方法 抽象方法

3,抽象方法只有宣告,而沒有具體的方法實現部分

注意:抽象類中的抽象方法,強制其子類重寫抽象方法

抽象類不能建立物件,因為其含有無具體實現的方法

抽象類建立物件的方式可仿照多型

抽象類中不一定有抽象方法,但抽象方法一定在抽象類中

其抽象方法無具體實現,所以沒法自身建立物件,且會強制子類重寫其抽象類

此外和普通類沒區別

抽象類中可以沒抽象方法嗎?作用是什麼

可以沒抽象方法,作用是禁止此類建立物件,而只能使用其子類

abstract 與static , final ,private 不能共存

static 修飾的靜態方法需用類名呼叫

而abstract修飾的抽象方法沒方法的實現,只有宣告,無法呼叫,所以不能喝static 一起使用

final修飾方法後不可重寫

而abstract修飾方法會強制子類重寫抽象方法,所以不能共存

private 修飾的方法只能本類訪問,而子類訪問不到,無法重寫

介面是對行為的抽象

使用inte***ce 修飾   //inte***ce a

介面特點:

1)介面只能宣告抽象方法

2)如果不寫public abstract 修飾介面宣告方法,系統會預設新增

3)介面無法建立物件,要使用介面,就要去實現介面中的方法

4)介面的實現 使用implements

介面注意

只能有常量public static final 常量名 = 初值;和抽象方法

當你在介面宣告常量系統會預設public static final

類和類的關係:單或多層繼承

類和介面的關係:實現關係,可以有單實現和多實現

class a implements c, s{}

介面和口的關係:可以單繼承,也可多繼承

inte***ce fly2 extends fly, fly1

* 動物類 姓名 年齡 吃飯 睡覺

* 貓和超級貓類

* 超級貓介面:飛

/*

* * 動物類 姓名 年齡 吃飯 睡覺

* 貓和超級貓類

* 超級貓介面:飛

*/public class demo04

abstract class animal

public animal(string name,int age)

public void setname(string name)

public void setage(int age)

public string getname()

public int getage()

public abstract void eat();

public abstract void sleep(); }

class cat extends animal

public cat(string name ,int age)

@override

public void eat()

@override

public void sleep()

}inte***ce fly

inte***ce fly1

inte***ce fly2 extends fly, fly1

class supercat extends animal implements fly2

public supercat(string name ,int age)

@override

public void eat()

@override

public void sleep()

@override

public void fly()

@override

public void flyy()

@override

public void fly1()

}

* 汽車租賃: 某公司分為小汽車和客車兩種車型, 小汽車有寶馬,本田,奇瑞等型號, 客車分為18座位和23座位的,

*/public class demo06

abstract class vehicle

inte***ce seat

inte***ce model

class bus extends vehicle implements seat

public void seat()

} class car extends vehicle implements model

public void model()

}

/*

* 建立乙個印表機類printer, 定義抽象方法print(), 建立兩個子類,針式印表機(dotmatriixprinter)

* 和噴墨印表機(inkperprinter), 在各自的類中重寫方法print(),編寫測試類實現兩種印表機,

* 再新增乙個雷射印表機子類(laserprinter), 重寫方法print(), 修改測試類實現該印表機列印

*/public class demo05

}abstract class printer

class dotmatriixprinter extends printer

}class inkperprinter extends printer

}class laserprinter extends printer

}

深入理解Java中的介面與抽象類

一 抽象類 抽象方法 只宣告而未實現的方法,即沒有方法體 public abstract void getmessage 抽象方法抽象類 普通類的超集,只是比普通類多了一些抽象方法而已 所有抽象方法要求使用abstract關鍵字來定義,並且抽象方法所在的類也一定要使用abstract關鍵字來 定義,...

深入理解Java的介面和抽象類

一 抽象類 二 介面 三 抽象類和介面的區別 抽象方法 它只有宣告,沒有具體的實現。抽象方法的宣告格式為 abstract void fun 抽象方法必須用 abstract 關鍵字來修飾,如果乙個類含有抽象方法,則稱這個類為抽象類,抽象類必須在類前用abstract關鍵字來修飾。因為抽象類中沒有具...

深入理解java抽象類

在物件導向的概念中,所有的物件都是通過類來描述的,但是並不是所有的類都描述了物件,有些類裡面並沒有包含足夠的資訊來描述物件,這些類被認為是抽象類。抽象類與普通類的區別就在於抽象類不能被例項化,這就決定了抽象類必須有子類實現它的抽象方法 抽象類只是在普通類的基礎上擴充了一些抽象方法而已,所謂的抽象方法...