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++繼承
- java中的繼承Java繼承
- Java中的類繼承與多型Java繼承多型
- 繼承(extends)與介面( implements)繼承
- Java基礎10 介面的繼承與抽象類Java繼承抽象
- Java中抽象類與介面的區別Java抽象
- java繼承與多型Java繼承多型
- Java的繼承Java繼承
- TypeScript 介面繼承TypeScript繼承
- 多繼承 與 多重繼承繼承
- JS中的繼承與原型鏈JS繼承原型
- TypeScript 介面繼承類TypeScript繼承
- JAVA中的註解可以繼承嗎?Java繼承
- 類的繼承,介面的使用繼承
- 關於Java中的物件、類、抽象類、介面、繼承之間的聯絡Java物件抽象繼承
- Java中(==)與equals的區別Java
- 12.16 Java繼承Java繼承
- java繼承extendsJava繼承
- 學習Java中遇到的繼承問題Java繼承
- 多執行緒:繼承方式和實現方式的聯絡與區別執行緒繼承
- Solidity中的繼承Solid繼承
- PostgreSQL中的繼承SQL繼承
- JavaScript中的繼承JavaScript繼承
- JS中的繼承JS繼承
- 聊聊TypeScript中類、介面之間相互繼承與實現的那些事兒TypeScript繼承
- Java中抽象類和介面的區別Java抽象
- Java面試題:Java中的集合及其繼承關係Java面試題繼承
- java -繼承 -重寫Java繼承
- Java繼承練習Java繼承
- Java集合繼承圖Java繼承
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- Java中replace與replaceAll區別Java
- C++中的繼承C++繼承
- 聊聊JS中的繼承JS繼承
- JS中的繼承(下)JS繼承
- JS中的繼承(上)JS繼承
- iOS分類(category)、類擴充套件(extension)、繼承的區別iOSGo套件繼承