JAVA中有关继承的一个实例

在JAVA中,“extends”用来表示继承,当创建一个类时,总是在继承,除非已经明确指出要从其他类中继承,否则都是隐式从JAVA中的标准根类Object中继承,下面的一个程序示范了JAVA中的许多特性:

package access;
class Cleanser{
	private String s = "Cleanser";
	public void append(String a){
		s +=a;
	}
	public void dilute(){
		append(" dilute()");
	}
	public void apply(){
		append(" apply()");
	}
	public void scrub(){
		append(" scrub()");
	}
	public String toString(){
		return s;
	}
	public static void main(String[] args){
		Cleanser x = new Cleanser();
		x.dilute();
		x.apply();
		x.scrub();
		System.out.print(x);;
	}
	
}
public class Detergent extends Cleanser{
	public void scrub(){
		append(" Detergent.scrub()");
		super.scrub();
	}
	public void foam(){
		append(" foam()");
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Detergent x = new Detergent();
		x.dilute();
		x.apply();
		x.scrub();
		x.foam();
		System.out.println(x);
		System.out.println("Testing base class:");
		Cleanser.main(args);
	}

}

该程序的运行结果为:


1.在Cleanser的append()方法中,用“+=”操作符将String对象连接起来,此操作符在JAVA设计时被重载用以String类型的连接操作,另一个是“+”。

2.在Cleanser和Detregent中均含有main()方法,可以为每个类都创建一个main()方法,这样做可以使测试更加方便,每个类的单元测试简便易行,并且在单元测试完成后,不需要删除该方法,可以留待下次的测试。
3.一个程序中含有多个类,也只有在命令行所调用的那个类的main()方法会被调用,因此,如果命令行是java Detregent,那么Detregent.main()方法会被调用。即使Cleanser不是一个public类,如果命令行是java Cleanser,那么Cleanser.main()也会被调用,即使一个类只具有包访问权限,其public main()依然可以访问。

4.Detregent.main()明确调用了Cleanser.main(),并将参数传递给了它。也可以向其传递任何String数组。

5.Cleanser中的所有方法都应为public,这一点非常重要,为了继承,一般的规则为:将所有数据成员指定为private,将所有的方法指定为public,而protected借助导出类来访问,特殊情况下根据实际进行微动。原因在于如果不加任何的访问限制符,那么默认为包访问权限,它仅允许包内成员访问,而其它包的某个类要继承时,只能访问public成员。

6.在Cleanser的接口中有一组方法:append()、dilute()、apply()、scrub()、toString()方法。由于Detregent继承自Cleanser,那么Detregent可以在接口中自动获取这些方法,可以将继承视作对类的复用。

7.在scrub()中,使用基类定义的方法对其进行修改是可行的,若相要在新版本中调用从基类继承来的方法,但在scrub()中并不能直接调用scrub(),因为会产生递归效应,所以可以利用surper可以对基类中的scrub()进行调用。

8.在继承中,并不一定非得使用基类的方法,可以在导出类中添加自己想要的新方法。除了可以调用Detregent的方法外还可以调用Cleanser中所有可用的方法。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值