java多态

Posted 薄灬荷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java多态相关的知识,希望对你有一定的参考价值。

1、应用程序不必为每个子类编写单独的功能调用,只需要对抽象基类(父类)进行处理即可。以不变应万变
2、子类的功能可以被父类的引用变量调用,这个叫做向后兼容。

例如:


class A {

  void Func1(){

  System.out.println("A func1 is calling");
    
  }
  void Func2(){
  Func1();
  }
}
class B extends A{

  void Func1(){

  System.out.println("B func1 is calling");
  }
  void Func3()
{

  System.out.println("B func1 is calling");
  }
}
class Test
{

  public static void main(String [] args){

  B b = new B();
  CallA(b)
  }
  public static void CallA(A a){
    a.Func1();
    a.Func2();
  }
}

在这段代码里面可以看到B继承了A并且覆盖了A中的Func1
在main中new了一个B的对象,调用了CaiiA(),同时传递了一个类B的一个对象b给了CallA(b),并且b被上溯造型为A在CallAde(b)的内部将会调用a.Func1是调用的A的Func1还是B的func1呢?
答案是调用的是b的Func1,因为传递到CallA里面的是一个B类的对象 //根据传进来的对象自动调用对应的方法
同时,运行a.Func2(),因为B中没有这个方法,所以将会运行A中的这个方法。
但是A中的这个方法要调用Func1,这个时候还是不会调用A中已经有的Func1,而是继续调用B中的这个Func1的因为子类的功能可以被父类的引用变量调用,这个叫做向后兼容

多态必备的三个条件1、有继承2、有重写3、父类引用指向子类对象

以上是关于java多态的主要内容,如果未能解决你的问题,请参考以下文章

java中多态是啥意思?

java中的多态

java实现多态有几种方式?分别是啥?

java多态怎么解释?

java中多态是啥意思?

多态分为哪两中