首页 > 其他 > 详细

多态中对成员的调用

时间:2017-03-01 22:46:14      阅读:270      评论:0      收藏:0      [点我收藏+]

1,成员变量:当子父类有同名成员变量时,多态调用时,只看调用该成员变量的引用所属于的类中的成员变量。简单说:无论编译或运行,都看等号的左边就行了。

class FU
{
     int num=1;
}
class ZI extends FU
{
    int num=2;
}
class test{

   public static void main(String[] args){
         FU f=new ZI();
        int a=f.num;
      System.out.println(a);
  }
}/*
运行结果输出为1;*/

  

2,成员函数:当子父类有同名成员函数时,多态调用时,编译时看的是引用变量所属的类中的方法;运行时,看的是对象所属的类中的方法。简单说:编译看左边,运行看右边。

class FU
{
     int num=1;
	 void show(){
		 System.out.println("FU的show方法");
	 }
}
class ZI extends FU
{
    int num=2;
	 void show(){
		 System.out.println("ZI的show方法");
	 }
}
class TEST{

   public static void main(String[] args){
         FU f=new ZI();
         f.show();
    }
}
//运行结果为输出ZI的show方法

  

3,静态函数:当子父类有同名静态函数时,多态调用时,编译和运行是看引用变量所属的类中的方法。简单书:编译运行看左边。(真正调用静态方法是不需要对象的,直接类名调用)

class FU
{
     int num=1;
	 void show(){
		 System.out.println("FU的show方法");
	 }
	 static void staticMethod(){
		 System.out.println("Fu的静态方法");
	 }
}
class ZI extends FU
{
    int num=2;
	 void show(){
		 System.out.println("ZI的show方法");
	 }
	 static void staticMethod(){
		 System.out.println("ZI的静态方法");
	 }
}
class TEST{

   public static void main(String[] args){
         FU f=new ZI();
         f.staticMethod();
    }
}
//运行结果输出Fu的静态方法

  

多态中对成员的调用

原文:http://www.cnblogs.com/day93110/p/6486528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!