《java编程思想》读书笔记——第一章1.5继承:重新使用接口(继承)

1.5继承:重新使用接口

1.继承的由来
我为什么会想要由继承这样的功能,比如我费劲心思设计出了一个对象后,又需要再去从头花费心思去书写一个结构功能相仿的新类是一件令人灰心的事,因此继承孕育而生
2.继承会做到什么
本质上,可以理解为通过对旧类的克隆创造出新的类,但是比起克隆,旧类的修改会让新的类同步产生修改
对于“克隆”出的新类来说,其复制了全部成员(除了private属性的),同时也复制了全部的接口,这意味着子类可接收所有父类可以接收的消息
3.子类的扩展、改善
复制完毕后,若不进行修改,将会得到一个和旧的类一模一样的新类,这样的结果明显是让人不能接受的,我们可以通过两种方法对子类进行扩展
1.通过直接增加父类没有的新函数对旧的类进行扩展
2.通过重写继承过来的旧方法对旧的类进行改善
pass:所以重载是扩展,重写是改善
4.改善的目标
对于旧方法的重写,我们所要做的是,尽管被调用的接口并没有改变,但是新版本他会有不同的改变
5.等价与类似
针对继承可能存在的争论:父类与子类究竟是何种关系?
若是只进行了改善,可以称为等价,因为其可调用的接口是完全一摸一样的,相当于对方要求给它一个形状,你完全可以给一个圆形给它,因为圆形就是形状
但是若进行了扩展,可以称为类似,相当于家里只能制冷的空调坏了,换上了一个可以冷热两用的空调

//代码中的继承
class father{
	int age = 41;
	String name = "father";
	public void say(){
	System.out.printf("hey man I am father");
}
class son1 extend father{
	public void say(){
	super();
	//这个super是指调用父类的函数的意思
	//顺便一提,就算删掉编译器也是默认有这个玩意的,除非删掉并写自己的方法
	}
		public void say(String name){
		//重载,同时也是类的扩展
		System.out.printf("hey man I am "+name);
	}		
}
class son2 extend father{
	//重写,调用的接口和以前一致,但是效果不同
	public void say(){
	System.out.printf("hey man what's up man ");
	}
}

发布了10 篇原创文章 · 获赞 0 · 访问量 180

猜你喜欢

转载自blog.csdn.net/qq_41445205/article/details/104098539