super注意点:
-
super调用父类的构造方法,必须在构造方法的第一个
-
super必须只能出现在子类的方法或者构造方法中!
-
super和this不能同时调用构造方法!
Vs this:
代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的应用
前提:
this:没有继承也可以使用
super:只能在继承条件才可以使用
构造方法:
this():本类的构造
super():父类的构造
ctrl+f(idel里面搜索关键字)
方法重写
重写:需要有继承关系,子类重写父类的方法!
-
方法名必须相同
-
参数列表必须相同
-
修饰符:范围可以扩大但不能缩小:public>protected>Default>private
-
抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException --->Exception(大)
重写,子类的方法和父类必须一致,方法体不同!
为什么需要重写:
-
父类的功能,子类不一定需要,或者不一定满足!
-
ALT+Insert:override(注解)
多态
即同一方法可以根据发送对象的不同而采用多种不同的行为方式
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多
多态存在的条件:
-
有继承关系
-
子类重写父类方法
-
父类引用指向子类对象
多态注意事项:
-
多态是方法的多态,属性没有多态
-
父类和子类,有联系 类型转换异常! ClassCastException!
-
存在条件:继承关系,方法需要重写,父类引用指向子类对象! Father f1 = new Son()
不能实现多态的情况:
-
static方法,属于类,它不属于实例
-
final 常量
-
private方法
instanceof关键字
判断对象与类是否有关系(继承)
A(对象) instanceof B(类)
代码:Object obj = new student();
obj是上面的A,但判断的类型是student类和B类的是否有继承关系
多态的类型转换(父到子/向上转型,子到父/向下转型)
-
父类引用指向子类的对象
-
把子类转换为父类,向上转型
-
把父类转换为子类,向下转型;强制转换
-
方便方法的调用
Person(数据类型) person = new Student()//new了个对象;
Person是这个对象的类型,类型是类型,对象是对象
若是父亲(向上转型),则只有父亲的方法,没有儿子的方法,但重写的显示的是儿子的方法(多态)
static详解
-
静态变量
-
代码块 static代码块>匿名代码块>构造方法
-
static代码块只执行一次
导入静态方法包
final修饰的类不能被继承
其它
(前提)在同一个类里面,非静态方法可以调用静态方法,不需要创建对象;因为静态方法和类同时加载