Java學習筆記之繼承(1)
阿新 • • 發佈:2018-12-25
提到繼承,大家可能第一時間會想到繼承遺產,Java裡的繼承雖然不是繼承錢,但是也和繼承遺產有相似之處。
繼承遺產一般是說子女輩獲得了父輩留下的錢財、物品等,java裡的繼承是指子類獲得了和父類一樣的屬性。
1、類的繼承格式
- class 父類 {} // 定義父類
- class 子類 extends 父類{} // 使用extends關鍵字繼承父類
class Person{
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Student extends Person { // 子類繼承父類
private String school; // 宣告新的屬性
public void setSchool(String school){
this.school = school;
}
public String getSchool(){
return school;
}
}
public class FirstJavaDemo {
public static void main(String[] args) {
Student stu = new Student(); // 例項化子類物件
stu.setName("張三");
stu.setAge(18);
stu.setSchool("NKU");
System.out.println("姓名:" + stu.getName() + " 年齡:" + " 學校:" + stu.getSchool());
}
}
2、繼承的限制
子類和父類的關係,可以對映到孩子與父親的關係,正常來說,一個孩子只可能有一個親生父親,但是父親可以有多個孩子,也就是說子類只能繼承一個父類,但是父類卻可以被多個子類繼承
class A {
// 各種程式碼
}
class B extends A{
// 各種程式碼
}
class C extends A{
// 各種程式碼
}
另外雖然不允許多重繼承,但是允許多層繼承,也就是說孩子可以繼承父親,父親繼承爺爺
class A { // 爺爺
// 各種程式碼
}
class B extends A{ // 父親繼承爺爺
// 各種程式碼
}
class C extends B{ // 兒子繼承父親
// 各種程式碼
}
3、訪問限制
使用繼承的時候,子類不能直接訪問父類的私有成員,但是可以呼叫父類的非私有方法。
class Person{
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Student extends Person {
public void fun(){
System.out.println("父類的姓名:" + name) // 錯誤,不能直接訪問私有屬性
System.out.println("父類的年齡:" + age) // 錯誤,原因同上
}
}
子類不能直接訪問父類的私有成員,但是可以通過getter方法間接來訪問,
class Person{
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Student extends Person {
public void fun(){
System.out.println("父類的姓名:" + getName()) // 正確,間接訪問
System.out.println("父類的年齡:" + getAge()) // 正確,間接訪問
}
}