继承跟重写

							继承

子类;
子类可以访问父类,但是能不能访问要受修饰符的限制-----分清楚,拥有和能不能直接操作到是两个不同的概念。
1、通过extends关键字,可以直接拥有来自父类的属性和行为。
2、父类的属性和行为,子类自动继承,但是子类不能继承父类的构造方法。
原因1、构造方法的语法要求是方法名必须和类名保持一致。
如果子类继承了父类的构造,那么子类就会有一个父类名的构造方法。
这一点与构造方法的语法冲突。
原因2、构造方法的作用是产生对象的。父类的构造方法产生父类对象。子类的构造方法产生子类对象。
3、虽然父类的构造方法没有被子类继承,但是在构建子类对象的过程中。
会先在内存中产生父类对象部分,再叠加子类持有部分,从而构造一个完整的子类对象。
—也就是说new一个子类对象时,会先调用父类构造,在调用子类构造。
—内存叠加的方式

super()—调用父类的构造方法

4、如果子类定义了和父类一模一样的属性,那么子类对象身上会有两个该属性,一个在父类对象部分,一个在子类持有部分。
1、该不该这么设计?
----不该,因为在设计子类的时候已经考虑共有,设计子类的时候考虑持有。
那么每个属性只应该考虑一次,不属于父类就属于子类。所有这样设计师不合理。
(在抽取共有属性和持有属性的时候出现问题。)基本上不会出现,但是面试常被问到。
2、那如何区分呢?
用super,属性名 代表的是定义在父类部分的同名属性
用this.属性名 代表的是定义在子类部分的同名属性

5、如果子类定义了和父类一模一样的方法呢?----这叫做方法的“重写”
它指的是所有类都有共同的行为,所以我们要定义在父类中。
但是,不同的子类又有不同的实现,所以需要在子类中重新书写一次。

重写要求:
方法名必须一致;
参数列表必须一致;
返回类型一致;

访问修饰符不能比父类更小;
子类重写后的方法不能比父类重新前的方法抛出更多的异常(更多不是指的个数,二十四指的范围)

java是单继承,一个子类只能有一个父类。

						继承的优点

代码的可重用性
父类的属性和方法可用于子类
设计应用程序变得更加简单
子类可以扩展父类的属性和方法

						方法的重写

子类中的方法与父类中的方法相同(方法名称、参数列表、返回类型)
方法重载
一个类中的方法与另一个方法相同,参数列表不同

比较两个对象是否相等
1、==
双等号在比较的时候,始终比较的是左右两端数据的值是否相等。
—假如左右两边都是引用数据类型,那么其值是引用变量所指向的对象的地址。
用==做比较,引用数据类型比较的是两个变量是够指向同一个对象。

2使用equals方法
equals方法在比较的时候,比较的是两个对象在业务在内容上是否相等,而不是物理存放位置(引用值)。
equals方法时在object这个类里面预先定义,即认为所有的类都应该有内容比较的方法。
但是在object中的实现只能是object自身,无法考虑每个具体子类持有的实现。
所以这个方法要由具体子类的编写者根据业务情况,完成重写。

toString()
返回的一个对象的字符串描述
在对对象直接进行字符串操作的时候,会被直接调用。
比如:直接打印一个对象。
toString()同样是在object中实现,所以并不能确定每个子类应该用什么字符串描述。
只能统一返回“全类名@16进制”的形式。
如果子类想要有自己的实现,那么就需要进行重写。
finalize()
实现了销毁对象,清理空间,回收资源的功能。
由垃圾收集(GC)调用,完成java所宣称的程序员无需关心内存清理的特性。
finalize()的实现是在object中实现,调用又是由GC调用,
所以这个方法的设计初衷不是交给我们重写的,就是为了让后面工作。
考题
finalize的作用
销毁对象,清理空间,回收资源的功能。
2final finally finalize
(1)final finally是关键字。finalize是方法。
(2)final ----含义就是“最终的,不可变的”
final修饰变量,变量变为常量
final修饰方法,不能被重写,称之为最终方法。
final修饰类,不能被继承,也就是不能产生子类。称之为“最终类”,“终态类”

final能不能修饰构造方法?----不能,构造方法本身就是不可变的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值