java中的繼承

java的繼承

1. java中繼承的關鍵字是extends, 其實現的形式是:

class Child extends Father{ }

繼承的主要作用就是對類進行擴充以及代碼的複用。

繼承的簡單例子:

public class Person {
	private String name;
	private int age;
	
	public void setName(String name)
	{
		this.name = name;
	}
	
	public String getName()
	{
		return name;
	}
	
	public void setAge(int age)
	{
		this.age = age;
	}
	
	public int getAge()
	{
		return age;
	}
}

public class Student extends Person{
}

public class TestMain {
	public static void main(String[] args)
	{
		Student stu = new Student();
		stu.setName("kaikai");
		stu.setAge(18);
		System.out.println(stu.getName() + ": " + stu.getAge());
	}
}

根據上面的代碼我們可以發現子類可以直接繼承父類的方法和屬性,實現代碼的複用。子類最低也可以維持和父類相同的功能,。當然子類也可以對屬性和方法進行擴充。如下:

public class Student extends Person{
	private String ID;   //擴充了新的屬性
	public void setId(String ID)
	{
		this.ID = ID;
	}
	
	public String getId()
	{
		return ID;
	}
}

public class TestMain {
	public static void main(String[] args)
	{
		Student stu = new Student();
		stu.setName("kaikai");
		stu.setAge(23);
		stu.setId("201505050418");
		System.out.println("姓名:" + stu.getName() + "\n年齡:" + stu.getAge() + "\n學號:" + stu.getId());
	}
}

2. 繼承的規( 限 )範( 制 )

  • 子類在實例化對象時會首先實例化父類對象。也就是首先調用父類的構造方法再調用子類的構造方法去初始化
public class Person {
	public Person()
	{
		System.out.println("調用父類的構造方法");
	}
}

public class Student extends Person
{
    public Student()
    {
    	super();  //在無參數的時候,super()寫不寫效果一樣
    	System.out.println("調用子類的構造方法");
	}
}

public MainTest
{
	public static void main(String[] args)
    {
    	Student stu = new Student();
    }
}

執行結果:

調用父類的構造方法
調用子類的構造方法

  • java只允許單繼承不允許多重繼承, 但是允許多層繼承,建議不超過三層。
class A{}
class B{}
class C extends A, B{}

上面的繼承當然是錯誤的。那麼問題來了,要是想讓C既有A的屬性,又有B的屬性怎麼辦呢?

那就只能讓C當孫子了。_

class A{}
class B extends A{}
class C extends B{}
  • 繼承的時候我們需要注意的是, 子類會繼承父類所有的屬性(包括私有屬性、構造方法、普通方法), 所有的非私有屬性子類都可以直接調用,所有私有的屬性,子類需要藉助其它方法調用。

如下,顯式繼承和隱式繼承。

public class Person {
	public String name = "kaikai";
	private int age = 21;
	
	public void setAge(int age)
	{
		this.age = age;
	}
	
	public int getAge()
	{
		return age;
	}
}

public class Student extends Person{
}

public class TestMain {

	public static void main(String[] args) {
		Student stu = new Student();
		stu.setAge(22);
		System.out.println("Student Name:" + stu.name);    //顯式繼承,可以直接調用
         System.out.println("Student Age:" + stu.getAge());   //隱式繼承, 需要調用別的方法訪問
	}

}

繼承總結

  1. 繼承的語法以及繼承的目的(擴展已有類的功能,使代碼重用)
  2. 子類對象的實例化流程:不管如何操作,一定要先實例化父類對象。
  3. 不允許多重繼承,只允許多層繼承。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章