導航:首頁 > 編程語言 > java所有子類

java所有子類

發布時間:2022-12-29 17:21:22

java父類如何獲得所有子類的名稱

java中子類可以獲取父類,是因為java語言規范強制要求所有非object類必須有父類,類在編譯的時候,父類唯一確定,編譯器會將父類的引用記錄在class文件裡面。
反過來,編譯器不會給你記錄子類,想要獲取,只能自己根據情況實現。比如在載入一個類的時候添加判斷,或者強制要求這些類滿足特定的條件,通過這個條件去獲取類的名稱

㈡ java中什麼是基類和子類

基類就是父類,Object類是所有類的父類,子類繼承父類,繼承並重寫父類的方法和非私有成員變數。舉個例子,車是父類,能走,有輪子是他的方法和屬性,汽車,自行車,火車就是子類,繼承了父類走的方法,又重載了輪子的個數這個屬性。大概就是這樣,不理解可以看看Java核心技術第一卷

㈢ java什麼叫子類

父子類:存在繼承關系,關鍵字extends,例如你說的:classSonextendsFather{Stringname;}兒子是父親的一個子類,是兩個獨立的類,只是子類繼承父類的成員變數和成員方法

內部類:與繼承無關,是定義在一個類內部的類,可以看成是類的一部分,分為:

例如:classFather{{}}這個表示「父親的衣服FatherClother」定義在父親類裡面(沒有繼承關系),並繼承衣服類Clother(有繼承關系)

此時「父親的衣服類」可以看成是父親類的一個一個成員變數,但他們沒有繼承關系,可以寫成:Father.FatherCloter,而那個「.」,表示成員運算符表示FatherClother是Father的一個成員,就像上面Son類中的Son.name一樣,但是我們不能寫成Father.Son。

所以樓主說的「classa1extendsa2{}那麼a1是a2的子類嗎?」是對的。

「我們寫B1.B2.C3(中間是點號)的時候,就表示c3是b2的子類,b2是b1的子類?」不是子類,是內部類

「那classa1{classa2{}}這樣a2也是a1的子類嗎?也可以寫成a1.a2?」不是子類,是內部類

內部類在解決這樣的問題的時候,很有用(當然只是一個方面,還有別的用處):

一個介面A中有p()方法,一個類B中也有p()方法,那麼我想讓這個介面被B實現,然後調用p()方法(B類中的p()方法,我不想覆蓋),但是我們調用的哪個?

此時我們可以在B的內部聲明一個內部類C,讓C去實現A介面,然後調用B中原有的p()方法,可以用B的對象b.p(),調用介面中被實現的p()方法,可以b..c.p()(c是類C的一個實例)

繼承,太熟悉了,熟悉到都不知道說什麼了,只能想到這么一句:繼承意味著基於一個已經定義好的類創建一個新的類,新的類將以某種方式擴展原有的類,可以認為就是一個類得到另一個類所有屬性的過程(構造函數木有被繼承,但子類可以通過super調用)。

後面還有匿名內部類,有興趣可以網路一下了解了解。

㈣ java什麼是繼承什麼是父類什麼是子類

1、繼承是面向對象最顯著的一個特性。繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,並能擴展新的能力。
2、有繼承關系的類才能分出哪個是父類,哪個是子類,繼承用extends關鍵字,extends後面的類則表示父類,extends前面的類則是子類。在java中所有的類都默認繼承Object類,Object類是所有類的父類。
3、直接繼承Object的類可以稱之為Object的子類,間接繼承Object的類可以稱之為object的間接子類,object則是它的間接父類或者超類。
示例:
public class Parent{

}
public class Child extends Parent{

}
對Parent、Child來說有繼承關系,則Parent是Child的父類,Child是Parent的子類。由於Parent、Child都默認繼承Object類,所有Parent、Child都是Object的子類。

㈤ Java中怎樣獲取一個類的所有子類

1、面向對象思想的繼承是子類繼承父類,父類被其它子類繼承在JAVA虛擬機的容器中並沒有直接介面獲取;

2、如果是在一個項目內獲取父類的子類繼承情況,參考這個代碼:

packagefind;

importjava.io.File;
importjava.io.IOException;
importjava.net.URL;
importjava.util.ArrayList;
importjava.util.List;

importfind.test.Intf;
importfind.test.Man;

publicclassClassUtil{
publicstaticvoidmain(String[]args){
try{
System.out.println("介面實現類:");
for(Class<?>c:getAllAssignedClass(Intf.class)){
System.out.println(c.getName());
}
System.out.println("子類:");
for(Class<?>c:getAllAssignedClass(Man.class)){
System.out.println(c.getName());
}
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

/**
*獲取同一路徑下所有子類或介面實現類
*
*@paramintf
*@return
*@throwsIOException
*@throwsClassNotFoundException
*/
publicstaticList<Class<?>>getAllAssignedClass(Class<?>cls)throwsIOException,
ClassNotFoundException{
List<Class<?>>classes=newArrayList<Class<?>>();
for(Class<?>c:getClasses(cls)){
if(cls.isAssignableFrom(c)&&!cls.equals(c)){
classes.add(c);
}
}
returnclasses;
}

/**
*取得當前類路徑下的所有類
*
*@paramcls
*@return
*@throwsIOException
*@throwsClassNotFoundException
*/
publicstaticList<Class<?>>getClasses(Class<?>cls)throwsIOException,
ClassNotFoundException{
Stringpk=cls.getPackage().getName();
Stringpath=pk.replace('.','/');
ClassLoaderclassloader=Thread.currentThread().getContextClassLoader();
URLurl=classloader.getResource(path);
returngetClasses(newFile(url.getFile()),pk);
}

/**
*迭代查找類
*
*@paramdir
*@parampk
*@return
*@throwsClassNotFoundException
*/
privatestaticList<Class<?>>getClasses(Filedir,Stringpk)throwsClassNotFoundException{
List<Class<?>>classes=newArrayList<Class<?>>();
if(!dir.exists()){
returnclasses;
}
for(Filef:dir.listFiles()){
if(f.isDirectory()){
classes.addAll(getClasses(f,pk+"."+f.getName()));
}
Stringname=f.getName();
if(name.endsWith(".class")){
classes.add(Class.forName(pk+"."+name.substring(0,name.length()-6)));
}
}
returnclasses;
}
}

㈥ java編程的填空題,java中所有類都是( )類的子類

java編程的填空題,java中所有類都是Object類的子類。

當編輯並運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟體或集成開發環境在Java源文件中定義不同的類,通過調用類中的方法來訪問資源系統,把源文件編譯生成一種二進制中間碼。

存儲在class文件中,然後再通過運行與操作系統平台環境相對應的Java虛擬機來運行class文件,執行編譯產生的位元組碼,調用class文件中實現的方法來滿足程序的Java API調用。



(6)java所有子類擴展閱讀:

自增和自減是單目運算符,可以放在操作元之前,也可以放在操作元之後。操作元必須是一個整型或浮點型變數。自增、自減運算符的作用是使變數的值增1或減1。

放在操作元前面的自增、自減運算符,會先將變數的值加1或減1,然後再使該變數參與表達式的運算。放在操作元後面的自增、自減運算符,會先使變數參與表達式的運算,然後再將該變數的值加1或減1。

閱讀全文

與java所有子類相關的資料

熱點內容
手機如何連接伺服器的遠程桌面 瀏覽:48
復雜命令的實現 瀏覽:330
抖音上的程序員和真正的程序員 瀏覽:300
查看kernel編譯器 瀏覽:279
給plc程序加密 瀏覽:225
python多進程數據共享 瀏覽:847
華為和安卓系統有什麼不一樣 瀏覽:106
python中wb表怎麼列印 瀏覽:297
python如何把字元串賦給數組 瀏覽:229
狄克斯特拉演算法是什麼 瀏覽:675
室內裝飾材料pdf 瀏覽:633
gitbook命令行 瀏覽:1000
啟動zookeeper命令 瀏覽:527
健身館app怎麼樣 瀏覽:314
python可視化項目 瀏覽:442
安卓機怎麼辨別蘋果機真假 瀏覽:711
微信小程序源碼轉成抖音 瀏覽:654
優省油app怎麼沒法下載 瀏覽:72
pdf格式轉換excel 瀏覽:625
高爾夫6壓縮機響 瀏覽:310