【Thinking in Java】复用类

复用的三种方式:

组合、继承、代理(代理是组合和继承的结合,Java中没有直接支持。通过将A类组合在B类中,并在B类中暴露A的所有接口来实现)


组合:将对象引用置于新类中即可。表示has-a关系。


继承:子类从父类继承得到父类的方法和变量,再根据自己需要对方法和变量进行增加和修改。表示is-a关系。


可以认为子类对象中包含了一个父类对象,所以在构造一个子类对象时,会先构造一个父类对象。构造顺序由里向外。参考下列代码,输出依次为:Art、Drawing、Cartoon。

class Art{
	Art(){
		System.out.println("Art");
	}
}

class Drawing extends Art{
	Drawing(){
		System.out.println("Drawing");
	}
}

public class Cartoon extends Drawing{
	public Cartoon(){
		System.out.println("Cartoon");
	}
	public static void main(String args[]){
		Cartoon c=new Cartoon();
	}
}
另外,如果需要调用一个带参数的基类构造器,必须显示调用super(parameter)。


重载和重写

重载指通过使参数列表不同来实现共用同一方法名的行为。

重写指子类重写父类中的某一方法以实现子类的特殊需求,参数列表需与父类中方法一致,否则就成了重载。

@Override表示重写,当方法发生意外重载时(即参数列表被改变),@Override后紧跟的方法会报错。


向上转型

子类对象可被理解为父类类型。


final关键字

对对象引用运用final时,表示该引用将永远无法指向另一个对象,但是该引用所指向的对象本身可变。

一个既是static又是final的域指占据一段不能改变的存储空间。static表示全局唯一,final表示不变。


final参数:表示在方法中无法改变参数引用所指向的对象


final方法:

final在这里表示方法不希望被修改。即使在继承过程中,子类也不能对父类的final方法做出任何修改,即final方法无法被重写。

所有private方法都被隐式地指定为final。


final类:
不允许被继承。

类中的域可以选择是不是final。

类中方法均被隐式地指定为final。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值