Java面向对象基础杂记3

Java面向对象基础杂记3

**super:**在子类中,以super.属性或super.方法显式调用父类属性方法。在子类构造器中也可以以super(形参列表)调用父类构造器,要求:只能在子类构造器首行且不能与this(形参列表)共存。
子类对象创建时,一定会直接或者间接调用父类的构造器,直到调用java.lang.Object类中空参的构造器为止。

多态性(向上转型):父类的引用指向子类的对象(子类的对象赋给父类引用)运行时行为,动态绑定(对方法而言)
Person p = new Man();
当调用子父类同名同参的方法时,编译阶段指向父类方法,实际执行子类重写父类方法(虚拟方法调用),此时只能调用父类声明过的方法。
(多态性不适应于属性,跟父类)
重写方法会彻底覆盖,实例变量不会(看声明的类)

强行转型时,编译阶段把父类转成子类不会报错,运行报错ClassCastException,不同类(非继承关系)的转型不能通过编译
**向下转型:**强行转型(父类引用指向子类,子类可以转型为父类,反之不可)会出现ClassCastException异常
instanceof:用于向下转型
用法:a instanceof A 判断对象a是否是类A(包括A的父类)的实例
多一个if即可在if从句中进行强行转型

= =:
在比较基本数据类型变量时,比较其保存的数据是否相等(不一定要类型相同)
在比较引用数据类型变量时,比较其地址值是否相同。
equals():
1.只适用于引用数据类型
2.Object类中定义的equals()和= =的作用是相同的,比较两个引用的地址值是否相同
3.String,Date等包装类都重写了方法,用来比较两个对象的实体内容是否相等
4.所以通常情况下,我们自定义的类如果使用equals()的话,都需要对Object类中的equals()进行重写。
通常情况下,X.equals(null)永远返回false。
X.equals(和X不同的对象)永远返回fals
但包装类(引用数据类型)直接赋值而不使用构造器时,如Integer a = 1,Integer b = 1;大于等于-128,小于128时使用==,也是真。
IntegerCache结构中定义了Integer[],保存这些整数,自动装箱会直接调用数组,而不会使用构造器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值