13、Java基础---继承

本文详细介绍了Java中的继承概念,包括银行账户类的示例、派生和继承的原理、构造函数的使用、方法的重写以及super关键字的应用。通过类的层次结构和is-A关系阐述了继承带来的代码复用和扩展性优势。此外,还讨论了Object类作为所有类的基类在继承中的角色。
摘要由CSDN通过智能技术生成

继承

本节将介绍继承已有类的资产来创建新类的技术---类的派生

一、银行账户类

在之前介绍类时创建了银行账户类Account[Java基础---类] ,修改程序,使其能表示"定期存款":
添加如下所示的字段和方法:
• 表示定期存款余额的字段
• 确认定期存款余额的方法
• 解除定期存款, 全部转为普通存款的方法

添加了上述字段和方法的带有定期存款的银行账户类TimeAccount如下所示:

// 带定期存款的银行账户类
class TimeAccount {
	private String name;			// 账户名
	private String no;				// 账号
	private long balance;			// 可用余额
	private long timeBalance;		// 可用余额(定期存款)【添加】
	//--- 构造函数 ---//
	TimeAccount(String n, String num, long z, long timeBalance) {
		name = n;						// 账户名
		no = num;						// 账号
		balance = z;					// 可用余额
		this.timeBalance = timeBalance;	// 可用余额(定期存款)【添加】
	}
	//--- 确认账户名 ---//
	String getName() {
		return name;
	}
	//--- 确认账号 ---//
	String getNo() {
		return no;
	}
	//--- 确认可用余额 【添加】---//
	long getBalance() {
		return balance;
	}
	//--- 确认定期存款 ---//
	long getTimeBalance() {
		return timeBalance;
	}
	//--- 存入k元 ---//
	void deposit(long k) {
		balance += k;
	}

	//--- 取出k元 ---//
	void withdraw(long k) {
		balance -= k;
	}

	//--- 解除定期存款,全部转为普通存款【添加】 ---//
	void cancel(long k) {	
		balance += timeBalance;
		timeBalance = 0;
	}
}

这个程序很轻松就能完成,只需将类Account的源程序复制过来,并添加、修改上述【添加】部分就可以了;类TimeAccount满足“处理定期存款"的目的,但失去了与银行账户类Account的兼容性。

static intcompBalance(Account a, Account b)
if (a. getBalance() > b. getBalance())    //a更多
    return l;
else if (a.getBalance() < b.getBalance())    //b更多
    return -1;                    
return O;                                //一样多

不可以向上述方法传递TimeAccount类型的实例(的引用),因为类Account和类TimeAccount是不同的类,如果编程时一直都是复制某个类, 然后对其进行部分添加、修改, 程序中就会充满无法兼容的"似是而非" 的类, 从而降低程序的开发效率、扩展性、维护性。

二、派生和继承

为了解决上述问题, 可以使用类的派生(derive)。所谓派生, 就是继承已有类的字段和方法等”资产“来创建新的类;派生时不仅可以继承资产,还可以添加、重写字段和方法。

下图是从已有的类Base派生一个继承其资产的类Derived的示例。在通过派生新创建的类的声明中,extends后面接的是派生源的类名。extend意为”扩展” ,类Derived的声明可以理解为:类Derived是对Base进行扩展后的类

派生源的类和通过派生创建的类名称如下:

• 派生源的类-----父类/上位类/基类/超类
• 派生的类----子类/下位类/派生类

从类Base派生类Derived举例:

• 对于类Derived来说,类Base是超类(上位类)
• 对于类Base来说,类Derived是子类(下位类)


这两个类的资产如下:

1)类Base
字段为a、b这2个,方法为a和b的getter和setter方法,总共4个。

2)类Derived

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值