多态性:依赖方法的覆写。
方法的多态性:
- 方法的重载
- 方法的覆写
对象的多态性:发生在继承关系中,子类和父类之间的转化
- 向上转型(自动完成):父类 父类对象=子类实例;
- 向下转型(强制完成):子类 子类对象=(子类)父类实例;
public class Main{
public static void main(String args []){
A a=new B(); //向上转型
a.print(); //这是B类
B b=(B) a; //向下转型
b.print(); //这是B类
}
}
class A{
public void print(){
System.out.println("这是A类");
}
}
class B extends A{
public void print(){
System.out.println("这是B类");
}
}
- 向上转型:由于所有的子类都可以自动向上转型,所以代码的最大意义在于参数的统一
public class Main{ public static void main(String args []){ A b=new B(); //向上转型 A c=new C(); //向上转型 b.print(); //参数类型的统一 c.print(); } } class A{ public void print(){ System.out.println("这是A类"); } } class B extends A{ public void print(){ System.out.println("这是B类"); } } class C extends A{ public void print(){ System.out.println("这是C类"); } }
- 向下转型:父类调用子类自己特殊的方法
设置数据(保存数据),参数功能的统一
取出数据
80%的情况下使用向上转型,得到参数的统一,方便程序的设计;
15%的情况下使用向下转型的方法,调用子类的特殊方法
5%的情况下不转型。
- 在开发之中尽量使用向上转型,以统一参数,只有使用了向上转型之后才可以使用向下转型;
- 子类尽量不要扩充与父类无关的操作方法