Java中介面與繼承的區別

之鋒之禾發表於2020-10-09

**

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.當你需要去呼叫介面時,抽象方法是一定需要寫上去的,即使在抽象方法你並不需要去實現什麼樣的功能,但這個步驟是一定不能少的;但是在繼承中並不是這樣的,當抽象方法需要實現的東西和父類中毫無差別的時候,抽象方法可寫可不寫,但是你想要在你的子類中去實現某些特有的功能時,這時候需要寫上抽象方法,然後在抽象方法寫上你所需要實現的功能即可。

相關文章