1.繼承
1)定義:一個類自動獲得另一個類的屬性或者方法的過程
2)使用:
父類:
public 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;
}
}
子類:繼承父類 並添加了自己新的方法
public class Doctor extends Person{
private String hospital;
public String getHospital() {
return hospital;
}
public void setHospital(String hospital) {
this.hospital = hospital;
}
}
3)java爲單根繼承 所有類都是Object的子類,缺省都繼承了Object
4)基本原則:
a.構造器不能被繼承
b.子類初始化時會默認情況調用父類缺省的構造器
c.子類調用父類的帶參的構造器,則父類可以不提供缺省構造器
5)怎麼使用繼承
a.區分是“has a” 與 “is a” ,“is a”是繼承關係
b.子類要擴充父類的功能
c.子類需要大量置換父類的功能時,不應該使用繼承
6)繼承的有缺點:
優點:a.繼承是最容易的複用代碼的形式
b.修改父類的功能時,子類可以自動獲得新的功能
缺點:最大的缺點是打破封裝,繼承只是類型複用
2.權限控制
類成員修飾符 類內部 同包 子類 其他
private 是
default 是 是
protected 是 是 是
public 是 是 是 是
3.重寫
1)定義:指子類重寫父類中的方法
2)條件:
a.方法名相同
b.參數列表相同
c.返回值相同
d.子類的修飾符>=父類的修飾符
f.子類抽象方法拋出的異常<=父類拋出的異常
3)例子:
public class Account {
private String id;
private String name;
private double balance;
public Account(String name, double balance) {
this.name = name;
this.balance = balance;
}
public Account(String name) {
this(name, 0);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
// 存款
public void deposit(double num) {
balance += num;
}
// 取款
public void debit(double num) {
balance -= num;
}
// 利息
public double getInterest() {
return 0;
}
}
上邊的Account類 有個利息方法 默認返回0 子類覆蓋給出新的實現
public class CheckingAccount extends Account
{
public CheckingAccount(String name, double balance){
super(name, balance);
}
public double getInterest(){
double interest=0;
if(getBalance()<=5000)
{
interest=getBalance()*0;
}
else if(getBalance()>5000 && getBalance()<=100000)
{
interest=getBalance()*0.01;
}
else if(getBalance()>100000)
{
interest=getBalance()*0.02;
}
return interest;
}
}
以上CheckingAccount 代表支票帳戶 是Account的子類 覆蓋了 獲取利息的方法 給出了新的實現