1.封装
2.继承
子类继承了父类,就会拥有父类的所有方法
ctrl+H
**
1.object类
2.super
无参构造
有参构造
super注意点
1.super调用父类的构造方法,必须放在构造方法的第一行
2.super只能出现在子类的方法或者构造方法中
3.super和this不能同时调用构造方法
VS
this
代表对象不同:
this:本身这个调用者
super:代表父类对象的引用
前提不同
this:没有继承也可以使用
super:只能在继承条件下才能使用
构造方法不同
this();当前此类的构造
super();父类的构造
**3.方法重写
Ctrl+O
静态
非静态
重写:需要有继承关系,子类重写父类的方法
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大 public>protected>default>private
4.抛出的异常:范围可以被缩小,不能扩大 ClassNotFoundException----Exception(大)
重写,子类的方法名跟父类一致,方法体不同
为什么要重写:
1.父类的功能子类不一定需要,或者不一定满足
****4.多态
区别:
或是强制转换类型
多态
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系 类型转换异常:ClasssCastException
3.存在条件:继承关系,方法重写 ,父类引用指向子类对象 Father f1=new Son();
不能被重写
1. static 方法属于类,不属于实例
2. final 常量
3. private方法
instanceof(类型转换)
1.父类引用指向子类对象
2.把子类转为父类,向上转型
3.把父类转为子类,向下转型,强制转换(可能会丢失一些方法)
—————————————————————————————————
instanceof报错和false的区别
A(对象) instcnaceof B(类)结果为boolean型
A和B比较之前会先判断A能不能转换成B类型,能则通过,不能则编译报错
Person person = new Student();
Object object = new Student();
person instanceof String之所以编译会报错是因为person是Person类型,而String是final类型,两者不能转换
而object instanceof String中object是Object类型,String是Object的子类也继承了Object类型,所有能类型转换,编译通过
编译通过后会把A和B比较,如果A是B本类或者子类的对象,结果就是true,反之就是flase