Java中介面與繼承的區別
**
Java中介面與繼承的區別
**
在Java中,介面的實現和繼承的實現很類似的,寫法上是幾乎是一致的,就是關鍵字這一部分不一樣,即介面使用的關鍵字為implements,而繼承使用的關鍵字為extends。程式碼如下:
介面的程式碼:
public class ButtonListener implements ActionListener {}
介面型別寫法與解釋:
//事件處理類
//實現介面一定要實現(重寫)介面中所有的抽象方法
//實現介面(繼承):implements
//public class 子類 implements 介面,介面,,{}
//一個子類後面能夠實現很多個介面的
//實現介面一定要實現(重寫)介面中所有的抽象方法
//ActionListener只是一個介面,也可以換成其他的介面的,所以下面必須是public void actionPerformed(ActionEvent e)的,抽象方法需與介面保持一致的
介面的程式碼例子:
public class ButtonListener implements ActionListener {
//引用傳遞
//定義文字框變數,用來儲存傳遞過來的文字框物件
public JTextField jt;
//動作處理方法
public void actionPerformed(ActionEvent e){
//獲取文字框內容
String userName = jt.getText();
//比較內容是否一樣:equals
//比較地址是否一樣:==
if("123".equals(userName)){
System.out.println("yes");
JFrame jf = new JFrame();
jf.setSize(400, 400);
jf.setTitle("對話方塊");
JLabel jl = new JLabel("賬號密碼驗證成功");
jf.add(jl);
jf.setLocationRelativeTo(null);
//設定可見
jf.setVisible(true);
}
else{
System.out.println("no");
JFrame jf = new JFrame();
jf.setSize(600, 600);
jf.setTitle("對話方塊");
JLabel jl = new JLabel("賬號密碼驗證失敗",JLabel.CENTER);
jf.add(jl);
jf.setLocationRelativeTo(null);
//設定可見
jf.setVisible(true);
}
}
}
繼承的程式碼:
public class UNStudent extends Student{}
繼承型別寫法與解釋:
/**
* 大學生類
* 繼承:extends
* public class 子類(派生類) extends 父類(基類) implements 介面,介面,,{}
* 繼承中父類只有一個,並不像介面一樣可以擁有很多個。
* 子類會繼承父類中的屬性和方法,私有屬性和方法不能直接使用
* @author liu
*/
繼承的程式碼例子:
public class UNStudent extends Student{
public void printName(){
System.out.println("名字:"+getName());
}
//方法重寫(覆蓋)
//1.有繼承關係的兩個類之間 2.返回值型別,方法名,引數型別(個數,順序)完全一樣
public void study(){
System.out.println("子類重寫父類的學習方法!");
}
}
綜上所述:
介面與繼承的區別有:
1.不同的關鍵字,即介面(implements),繼承(extends);
2.在物件導向程式設計的時候可以有多繼承,但是隻是支援介面的多繼承,不支援繼承的多繼承,這話可能有點繞,簡單點說,就是介面可以有好多個,但是繼承的中父類只能只有一個,因為父親只有一個,這說明了繼承在Java中具有單根性,子類只能去繼承一個父類的;
3.在介面中只能定義全域性變數和抽象方法,而在繼承中可以定義屬性方法,變數,常量的等等…
4.當某個介面被實現的時候,在類中一定要用介面中的抽象方法,而繼承想呼叫哪個方法就呼叫哪個方法,毫無壓力的;
5.當你需要去呼叫介面時,抽象方法是一定需要寫上去的,即使在抽象方法你並不需要去實現什麼樣的功能,但這個步驟是一定不能少的;但是在繼承中並不是這樣的,當抽象方法需要實現的東西和父類中毫無差別的時候,抽象方法可寫可不寫,但是你想要在你的子類中去實現某些特有的功能時,這時候需要寫上抽象方法,然後在抽象方法寫上你所需要實現的功能即可。
相關文章
- Java 自學 - 介面與繼承 介面Java繼承
- C++中公有繼承、保護繼承、私有繼承的區別C++繼承
- C#虛基類繼承與介面的區別C#繼承
- Java繼承和介面Java繼承
- Java中的繼承與組合Java繼承
- 繼承與介面 (轉)繼承
- Java介面之間的繼承Java繼承
- java中的繼承Java繼承
- 三種繼承的方法:public 繼承/private繼承/protected繼承詳解及區別繼承
- java中繼承Java中繼繼承
- 征服 JavaScript 面試:類繼承和原型繼承的區別JavaScript面試繼承原型
- 繼承(extends)與介面( implements)繼承
- Java的類與繼承Java繼承
- 澄清Java語言介面與繼承的本質(轉)Java繼承
- JAVA介面繼承、抽象類等Java繼承抽象
- Java基礎10 介面的繼承與抽象類Java繼承抽象
- Java:類與繼承Java繼承
- Java中抽象類與介面的區別Java抽象
- java繼承與多型Java繼承多型
- TypeScript 介面繼承TypeScript繼承
- Java的繼承Java繼承
- Java程式碼塊與Java繼承Java繼承
- 多繼承 與 多重繼承繼承
- JS中的繼承與原型鏈JS繼承原型
- Java繼承Java繼承
- TypeScript 介面繼承類TypeScript繼承
- JAVA中的註解可以繼承嗎?Java繼承
- java之繼承中的構造方法Java繼承構造方法
- Java繼承的使用Java繼承
- Java中(==)與equals的區別Java
- 關於Java中的物件、類、抽象類、介面、繼承之間的聯絡Java物件抽象繼承
- Java 繼承與多型實驗Java繼承多型
- Java抽象類與介面的區別Java抽象
- JavaScript中的繼承JavaScript繼承
- PostgreSQL中的繼承SQL繼承
- JS中的繼承JS繼承
- 學習Java中遇到的繼承問題Java繼承
- 為什麼Java中繼承是有害的Java中繼繼承