多态
多态注意事项
- 多态是方法的多态,属性没有多态
- 父类和子类,有联系 ,类型转换异常!
ClassCastException
- 存在条件:继承关系,方法需要重写,弗雷引用指向子类对象!
Father f1 = new Son();
- static 修饰的方法属于类,不属于实例,所以不能多态
- final 常量,…
- private 方法: 不能多态
当继承没有重写父类方法时,多态执行父类方法。
当子类重写父类方法时:多态执行子类方法
重写
添加static 之后的是重写,无关多态,各自执行各自的方法,不加是继承
重写只能是public,不能是private,将父子类的修饰改成private之后 @Override就报错了
重写的子父类之间 修饰符关系
重写后 只能变大 不能变小
例如:父类是private 子类是public或者protected
public > Protected > Default > private
* 抛出的异常范围: 可以被缩小,但不能扩大; ClassNotFoundException ----> Exception(大)
【暂未遇到 想起来再补】
重写修饰符关系演示:
抽象
含有抽象方法的class必须是抽象类
实现抽象类的 必须实现抽象类所有的抽象方法,除非自己也是抽象类。
接口
接口不能被实例化~,接口中没有构造方法~
implements可以实现多个接口
必须重写接口中的方法
public interface B{
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
实现
接口可以 多继承
public class A implements B,C{
// 重写他俩的所有抽象方法
}