码迷,mamicode.com
首页 > 编程语言 > 详细

java多态

时间:2016-05-29 22:46:10      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

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多态

标签:

原文地址:http://www.cnblogs.com/chenwei123/p/5540413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!