Java基礎一(繼承和多態)

  • 1.繼承
Java中類只有單繼承(子類無法繼承父類的構造方法),不同於C++中多繼承,一個子類只能有一個父類。多繼承會讓Java整體結構變得混亂。
Java中實現接口方法實現多繼承、多態。
      繼承第二個特性:重寫 Vs 重載:
重寫(override):子類對父類的方法的覆蓋,對此有之下要求:
1).子類必須與重寫方法具有相同的方法名稱,相同參數列表和返回值類型;如果子類值參數列表不同於父類即使兩者有相同的函數名稱,只能算作是新的方法。
2)子類方法不能夠縮小父類的訪問權限,但是可以擴大權限:
父類 用public方法,子類不能用protect或者private修飾重寫方法,但是父類protect方法,子類可以用public方法;      如果想訪問父類方法 使用關鍵字 super
重載:一個方法名稱有多個方法,構造函數重載(overload)有不同的參數列表。

  • 2.多態
多態:通過指向父類的指針,調用不同子類中實現的方法 ,Java自動判斷引用不同子類。
package ExtendsDemo;
/*使用多態*/
public class Anmial {

     String name;
      int age;
	
	//訪問內部數據的方法
	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public int getAge() {
		return age;
	}


	public void setAge(int age) {
		this.age = age;
	}

	//動物叫聲
	public void cry()
	{
		System.out .println("動物會叫");
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Cat cat=new Cat();
		cat.cry();
		
		Dog dog=new Dog();
		dog.cry();
		
		/********出現多態情況************/
		Anmial an=new Cat();
		// Cat 屬於Anmial父類一個子類,這裏new開闢一個對象沒有問題
		//通過指向父類調用不同子類方法
		an.cry();
		an=new Dog();
		an.cry();
	}

}

class Cat extends Anmial
{
	public void cry()
	{
		System.out.println("Cat cry");
	}

}

class Dog extends Anmial
{
	public void cry()
	{
		System.out.println("Dog cry");
	}

}

結果輸出:
Cat cry
Dog cry
Cat cry
Dog cry

事實上,在一些實際過程中出現將子類強制轉換成父類,子孫類必須要擁有父類的所有的方法,同時子類比父類更加的詳細,所以子類轉換成父類是可以的,但是不能夠讓父類轉換成子類。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章