笔记之继承模型

本系列博客都是本人在学习过程中的一些自己的理解,口语化很严重,也是写给自己看的备忘录。


说到继承模型,相信在不管在学校的老师口中还是网上的资料,基本都给自己一个感觉:子类继承父类,就是把父类中的所有内容导入到子类中。其实这种思想是非常错误的。用“继承”一词来翻译java中的“extends”我都觉得不妥。

其实子类继承父类,也就是2个对象产生了联系。

为什么说是2个对象?

             因为子类的构造的第一个代码就是 super();去实例化父类。

为什么说子类和父类有关系?

            因为子类中很多方法都是super.方法名(直接调用父类的方法)。

值得关注的是:成员变量一直是我头疼的地方。因为我一直思考父类的私有成员变量会不会被子类使用到。和子类使用父类成员变量的一些场景。后来发现,成员变量问题根本不需要去关注,因为真正的场景是:我想使用父类中的成员变量,是需要父类的方法调用的,而在继承模型中,只有子类或者父类中有该方法。

情景一:

public class Person {

	private String name;
	private int age = 23;
	
	public void show(){
		System.out.println(name + age);
	}
}

父类Person直接调用自己的name + age ,无可厚非,没什么值得讨论的;

情景二:如果子类Student也想使用name + age,要么重写Peron 的show 方法,要么自己定义自己的name + age(这样太低级且 没意思)

public class Student extends Person{

	
	public void show(){
		super.show();
	}
}

你看,代码中 Student根本不需要理会 name + age 因为我Student根本不好使用父类的东西,我只能去指挥父类去操作name+age,所以 继承根本不是什么代码的复制,而是子类和父类产生了一种“主仆”关系一样(子类指挥父类)。

在继承模型中

    this表示继承模型中最外层的对象,比如 Person p =new Student();  不论是Peron代码中还是Student代码中,this代表的是Student,而super代表 当前对象的上一级,即在Person代码中的super代表 Object ,Student代码中的super代码Person



猜你喜欢

转载自blog.csdn.net/qq_38643434/article/details/80897419