2020.11.23

继承
成员方法不重名
如果子类父类不重名,调用不会有仍和问题,子类找不到就去父类里面找
如果出现了子类和父类成员方法重名-------重写(override),这是一种特殊情况,叫做【方法重写】

什么是方法重写
方法重写就是出现于父类一模一样的方法,【声明不变,重新实现方法体内容】;

方法重写特点
1.方法重写前提是继承
2.方法名,参数列表,返回值类型完全一样
3.方法重写在子类中

为什么要方法重写
子类可以根据需要,定义特定于自己的行为,一方面沿袭了父类的功能名称,又根据子类需要重写方法从而进行功能扩展

方法重写设计原则
对于已经投入使用的方法不要去修改,重写之后加入新方法就可以了

重写与重载的关系
重写:必须先继承,方法名一样,参数列表一样,返回值类型一样,在子类中
重载:方法名一样,参数列表不一样,返回值无关,在本类中

继承后的特点----构造方法
1.构造方法名和类名一致--------子类无法继承父类当中的构造方法
2.一半用来初始化成员变量,子类初始化的时候,必须先进行父类初始化。子类构造方法中有一个默认的super()方法,所以父类初始化完成之后才会完成子类初始化,因为子类可以直接使用父类的成员变量,所以父类初始化先于子类初始化完成的。

super和this的区别
super调用父类,this调用本类。
1.父类的空间优先于子类空间创建所以每次初始化子类空间,都会先初始化父类对象,再创建子类对象,
2.子类对象内部就包含了他父类空间,体现就是子类构造方法调用的时候,会优先调用父类构造方法。
3.所以能使用父类当中的成员属性很成员方法,如果父类成员非私有,所以就能随意使用,私有就只能通过公有方法调用。

1.子类对象开始创建之前,先执行内部默认的super()方法,指向父类的内存地址,他们都在【方法区】,
2.测试类里面main方法在【栈内存】,new对象的时候,转到堆内存,
3.子类对象new出来空间之前会先执行父类构造方法,new出来一个父类空间,再创建出来子类空间,父类空间在子类空间之内。
4.父类空间是【super】空间,子类空间是【this】空间,子类空间的地址返回给我们的【Zi zi=】,然后子类的【非继承方法】开始在栈空间内部进行压栈
5.方法内部的局部变量如果是基本数据类型,那么就不会进入常量池就待在栈空间,方法调用用到this或者supre就会去相应的空间调用。
6.如果说我们的方法是【继承父类方法】子类继承方法先压栈,之后会把内部父类的方法进行压栈。最后完成一整套操作。

原文地址:https://www.cnblogs.com/tushao/p/14026576.html