继承的实现
我们创建一个会员类(包含电话号,密码,注册名,余额四个属性),创建一个投资人类,一个借款人类,并实现一个简单的充值功能。
我们首先用传统方法实现上述需求:
Member类:
public class Member {
private String phone;
private String password;
public String regName;
private double amount;
//get方法
public double getAmount() {
return amount;
}
//set方法
public void setAmount(double amount) {
//this,谁调用了这个方法,this就指代谁。比如Tom调用了这个方法,那this就是Tom。即Tom的账户余额
this.amount = amount;
}
//我们设置reCharge函数返回一个布尔值。
public void reCharge(double amount) {
//充值要求大于100小于10000。
if(amount<100||amount>10000) {
System.out.println("充值金额需在100-10000元之间");
}else {
System.out.print("充值成功!");
//充值金额+原有金额=当前金额
this.amount+=amount;
}
}
}
Investor类:
//投资人类继承于会员类
public class Investor {
private String phone;
private String password;
public String regName;
private double amount;
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public void reCharge(double amount) {
//充值要求大于100小于10000。
if(amount<100||amount>10000) {
System.out.println("充值金额需在100-10000元之间");
}else {
System.out.print("充值成功!");
//充值金额+原有金额=当前金额
this.amount+=amount;
}
}
}
Borrower类:
public class Borrower {
private String phone;
private String password;
public String regName;
private double amount;
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public boolean reCharge(double amount) {
//充值要求大于100小于10000。
if(amount<100||amount>10000) {
System.out.println("充值金额需在100-10000元之间");
}else {
System.out.print("充值成功!");
//充值金额+原有金额=当前金额
this.amount+=amount;
}
}
}
主类:
public class Test02 {
public static void main(String[] args) {
// 投资人和借款人也是会员
Investor jack = new Investor();//新建一个投资人jack
jack.setAmount(100500);
System.out.println("投资人jack原本余额为:"+jack.getAmount());
jack.invest(10000.05);
jack.reCharge(500);
System.out.println("充值后,投资人jack的余额为:"+jack
.getAmount());
jack.withDraw(1000);
System.out.println("提现后,投资人jack的余额为:"+jack
.getAmount());
System.out.println();
Borrower rose = new Borrower();//新建一个借款人rose
System.out.println("借款人rose原本余额为"+rose.getAmount());
rose.reCharge(5000);
System.out.println("借款人rose充值后余额为"+rose.getAmount());
rose.withDraw(1000.0);
System.out.println("提现后,借款人rose的余额为:"+rose
.getAmount());
}
}
我们使用上面的代码已经实现了所需的功能。
但我们会发现其中的子类和父类的代码有着大量的重复,会使得代码冗余。
通过观察我们发现:由于借款人和投资人都属于会员,于是Member类可以作为一个父类,然后借款人类和投资人类继承这个类之后,就具有父类当中的属性和方法,子类就不会存在重复的代码,维护性也提高,代码也更加简洁,提高代码的复用性(复用性主要是可以多次使用,不用再多次写同样的代码)。继承之后的代码:
Member类:
public class Member {
private String phone;
private String password;
public String regName;
private double amount;
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public void reCharge(double amount) {
if(amount<100||amount>10000) {
System.out.println("充值金额需在100-10000元之间");
}else {
System.out.print("充值成功!");
this.amount+=amount;
}
}
}
Investor类:
public class Investor extends Member {
public void reCharge(double amount) {
super.reCharge(amount); //直接调用父类中声明的方法
}
}
Borrower类:
public class Borrower extends Member{
public void reCharge(double amount) {
super.reCharge(amount);
}
}
主类:
public class Test03 {
public static void main(String[] args) {
// 投资人和借款人也是会员
Investor jack = new Investor();//新建一个投资人jack
jack.setAmount(100500);
System.out.println("投资人jack原本余额为:"+jack.getAmount());
jack.invest(10000.05);
jack.reCharge(500);
System.out.println("充值后,投资人jack的余额为:"+jack
.getAmount());
jack.withDraw(1000);
System.out.println("提现后,投资人jack的余额为:"+jack
.getAmount());
System.out.println();
Borrower rose = new Borrower();//新建一个借款人rose
System.out.println("借款人rose原本余额为"+rose.getAmount());
rose.reCharge(5000);
System.out.println("借款人rose充值后余额为"+rose.getAmount());
rose.withDraw(1000.0);
System.out.println("提现后,借款人rose的余额为:"+rose
.getAmount());
}
}
软件测试工程师一只,也在不断的学习阶段,平时的小经验不定期分享。
博主经验有限,若有不足,欢迎交流,共同改进~
有意可加Q群 908417285 交流学习。
乾坤未定,你我皆是黑马