首頁  >  文章  >  後端開發  >  多態的成員特點

多態的成員特點

伊谢尔伦
伊谢尔伦原創
2016-11-26 10:14:59862瀏覽

⒈在多態中非靜態成員函數的特性:
①在編譯時期:參閱引用型變數所屬的類別中是否有呼叫方法。如果有,編譯通過,否則編譯失敗;
②在運行時期:參閱物件所屬的類別中是否有呼叫的方法。
------------------------------------------------- -
//總之:成員函數在呼叫時,編譯看左邊,運行看右邊。 //
----------------------------------------------- ---
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
*/
}



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn