疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

多态的成员特点


 

   

  ⒈在多态中非静态成员函数的特点:

  ①在编译时期:参阅引用型变量所属的类中是否有调用方法。如果有,编译通过,否则编译失败;

  ②在运行时期:参阅对象所属的类中是否有调用的方法。

  --------------------------------------------------

  //总之:成员函数在调用时,编译看左边,运行看右边。//

  --------------------------------------------------

  2.在多态中成员同名变量的特点:(ps:不同名未考证)

  无论编译还是运行,都参考左边(引用型变量所属的类)

  3.在多态中静态成员函数的特点:

  无论编译还是运行,都参考左边(引用型变量所属的类)

  example:

  Class Fu

  {

  int num=1;

  public void method1()

  {

  System.out.println("fu_1");

  }

  public void method3()

  {

  System.out.println("fu_3");

  }

  //静态方法(包括变量)不所属于对象,它绑定于所属的类,会在内存中提前加载出来

  public static void method4()

  {

  System.out.println("fu_4");

  }

  }

  Class Zi extends Fu

  {

  int num=2;

  public void method1()

  {

  System.out.println("zi_1");

  }

  public void method2()

  {

  System.out.println("zi_2");

  }

  public static void method4()

  {

  System.out.println("zi_4");

  }

  }

  Class Duotaitest

  {

  public static void main (String [] args)

  {

  Fu f=new Zi ();

  f.method1();

  //f.method2(); 此行代码若存在,则编译失败,Fu类中没此方法

  f.method3();

  f.method4();

  System.out.println(f.num);

  Zi z= new Zi();

  System.out.println(z.num);

  }

  /*

  运行结果: zi_1

  fu_3

  fu_4 //静态方法不能被子类重写覆盖,若想调用子类中的静态方法(一般没这么用的,只是面试会用到)Zi.method4(类名.方法名)

  1

  2

  */

  }