繼承
繼承(inheritance)是面向?qū)ο蟮闹匾拍畋芊獭@^承是除組合(composition)之外,提高代碼重復(fù)可用性(reusibility)的另一種重要方式河爹。我們在組合(composition)中看到匠璧,組合是重復(fù)調(diào)用對象的功能接口。我們將看到咸这,繼承可以重復(fù)利用已有的類的定義夷恍。
繼承涉及到5個內(nèi)容:
1、基類的繼承(基類public數(shù)據(jù)成員和方法的繼承)
2媳维、衍生類成員的補充
3酿雪、基類與衍生層的成員訪問(隱式參數(shù)this和super的使用)
4、基類與衍生類的方法覆蓋
5侄刽、基類與衍生層的構(gòu)造方法調(diào)用
用以下代碼來解釋
一指黎、基本代碼
先定義一個People類
package Inheritance;
class People
{
private String name;
private int age;
public People(String name, int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return this.name;
}
public int getAge()
{
return this.age;
}
public void showInfo()
{
System.out.println("My name is:" + this.name + ",my age is:" + this.age);
}
}
定義一個繼承People類的Student類
package Inheritance;
// 用關(guān)鍵字extends實現(xiàn)繼承
class Student extends People
{
// Student作為People的衍生類,可補充自有的數(shù)據(jù)成員sex唠梨、sexStr
private boolean sex;
private String sexStr;
public Student(String name, int age, boolean sex)
{
super(name, age);
// 隱式參數(shù)super可用于訪問父類的構(gòu)造方法袋励、數(shù)據(jù)成員和方法
// 子類Student編寫構(gòu)造方法時,必須要調(diào)用父類People的構(gòu)造方法
this.sex = sex;
// 隱式參數(shù)this可用于訪問當前類內(nèi)部的數(shù)據(jù)成員和方法
if (sex = true)
{
this.sexStr = "男";
}
else
{
this.sexStr = "女";
}
System.out.println("I am student!");
}
// 衍生類可覆蓋父類的方法当叭,外部類調(diào)用時Student的showInfo()方法時,不會同時調(diào)用父類的showInfo()方法
public void showInfo()
{
System.out.println("Student Infomation:");
System.out.println("My name is:" + super.getName() + ",my age is:" + super.getAge() + ",my sex is:"
+ this.sexStr);
}
}
然后我們用InheriTest類實現(xiàn)這兩個類
package Inheritance;
public class InheriTest
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Student stu = new Student("J-Chen", 26, true);
stu.showInfo();
}
}
上面只寫了繼承的一些具體實現(xiàn)盖灸,上面的5個知識點蚁鳖,已經(jīng)在注釋中寫到。
關(guān)于Java的繼承的具體知識點赁炎,可以到網(wǎng)上搜醉箕,實在太多了,這里我就不做詳述了徙垫。