繼承(extends)與介面( implements)

gzh4869發表於2020-11-26

繼承(extends)與介面( implements)

類,介面與陣列同為Java中的三大引用方法,這裡剛學到繼承,先來說下繼承。

繼承就是兩個類:通過繼承這個方法,使得子類可以繼承父類的屬性和方法。

  • 子類可以呼叫父類中的方法和屬性
  • 子類可以新增方法和屬性作為補充
  • 子類可以重寫父類中的方法,前提是其中的返回值型別,方法名,引數型別(個數,順序)完全一樣
  • 一個子類只能有一個父類(類似於一個兒子只能有一個老爸)

例子:
這是父類

package helloword;

public class Father {
	public int a;
	public int b;
	public String name;
	
	public void study() {
		System.out.println(name + "的英語六級的成績為" + a);
	}
	
	public int count(int a, int b) {
		return a+b;
	}
}

這是子類

package helloword;

public class Son extends Father{
	//重寫父類的方法
	public void study() {
		System.out.println(name + "四級考試成績為" +b);	
	}		
	
	public int count(int a, int b) {
		return a-b;    //加變減
	}
	
	//子類對父類做補充
	public void lazzy() {
		System.out.println("奔哥英語免修");
	}
	
	public static void main(String[] args) {
		Son s = new Son();
		s.a = 493;
		s.b = 425;
		s.name = "韓奔";
		s.study();
		s.lazzy();
		
		System.out.println("奔哥的英語四級比英語六級的分數低了"+s.count(s.a,s.b));
		
	}
}

輸出的結果為:

韓奔四級考試成績為425
奔哥英語免修
奔哥的英語四級比英語六級的分數低了68

以上便可以體現繼承的特徵。

繼承之中還分有向上轉型和向下轉型,先來說向上轉型(自動轉型):

格式:		   		 父類 物件名 = new 子類();

自動轉型是子類轉型為父類,當你用轉型後的物件呼叫方法它是從父類找到子類,所以子類如果重寫了父親類的方法,它優先呼叫子類中重寫的方法。
程式碼如下:

package hello;
//父類
public class Father {
	public void study() {
		System.out.println("華理404就旭哥有物件");
	}
}

//子類
package hello;

public class Son extends Father{
	
	public void study() {
		System.out.println("最帥的輝哥還是單身");
	}
	
	public static void main(String[] args) {
		Father m = new Son();
		m.study();
	}
}

輸出結果:

最帥的輝哥還是單身

以上便是向上轉型。

接著便是向下轉型:

格式               子類   物件名 = (子類) 要轉型的物件名;

例子:

package hello;
//父類
public class Father {
	
	public void study() {
		System.out.println("華理404就旭哥有物件");
	}
	
	public void lazzy() {
		System.out.println("華理機械就一個院士");
	}
}

//子類
package hello;

public class Son extends Father{
	
	public void giveup() {
		System.out.println("皇族永不放棄");
	} 
	
	public void study() {
		System.out.println("最帥的輝哥還是單身");
	}
	
	public static void main(String[] args) {
		//建立一個Son型別的物件s
		Son s = new Son();
		s.study();
		
		//強制將m物件轉為Father型別
		Father m = new Son();
		m.lazzy();            //Son中沒有lazzy
		m.study();
		
		Son un = (Son)m;
		un.giveup();
	}
}

輸出結果:

最帥的輝哥還是單身
華理機械就一個院士
最帥的輝哥還是單身
皇族永不放棄

介面( implements)

介面與類有相同也有不同:

  • 介面在寫的時候,其中的方法全部都是沒有內容的
  • 要想呼叫介面,就要重寫介面中的所有方法
  • 介面中的屬性要在定義的時候直接賦值,而且在呼叫時不可更改
  • 一個類可以呼叫多個介面
  • 介面沒有建構函式,不可以建立物件
  • 通常定義介面屬性的時候屬性名要大寫,方便區分

例子:


public interface Teacher {
   
   public String NAME = "王東"; //初始定義時賦值
   
   public void math(int a,int b);
}


public class Student implements Teacher{
   
   public void math(int a,int b){
   	System.out.println("一加一等於" + (a+b));
   }
   
   public static void main(String[] args) {
   	System.out.println("數學課老師的名字為"+Teacher.NAME);
   	Student ui = new  Student();
   	ui.math(1,1);
   }
}

輸出結果:

數學課老師的名字為王東
一加一等於2

相關文章