一个对象的实际类型是确定的,比如 new A()
可以指向的引用类型不确定
比如可以是 A a = new A();
也可以是 B b = new A();
子类能调用的方法都是自己的或是继承父类的
父类可以指向子类,但是不能调用子类独有的方法(非要使用可以强制转换)
父类定义了一个方法,子类重写
在 main 方法里调用父类方法和子类方法
因为子类重写,所有即使从父类里调用,依旧执行子类重写的方法
多态:
1.多态是方法的多态,属性没有多态
2.父类和子类需要有联系,类型转换异常报 ClassCastException
3.多态的存在条件:
继承关系、子类重写父类方法、父类引用指向子类对象
例:Father f1 = new Son();
没有多态的情况:
1. static 方法,属于类,不属于实例
2. final 常量,通常写死
3. private 方法,没法重写即没有多态
多态即同一方法可以根据发送对象的不同而采用多种不同的行为方式
instanceof:判断一个对象是什么类型,两个类是否存在父子关系
类型转换:
在子类里写方法,若在 main 方法里,父类引用指向子类对象,则无法直接调用子类方法,需强制转换
子类转换为父类,向上转型
父类转换成子类,向下转型:强制转换