課程
/后端開發(fā)
/Java
/反射——Java高級開發(fā)必須懂的
類類型可以創(chuàng)建對象,照你這么說,void d= new void(); ?應該也是可以的,可是為什么就不行了?請給解釋。
2016-11-08
源自:反射——Java高級開發(fā)必須懂的 3-1
正在回答
因為Void這個類的無參構造方法是私有的(private),如圖所示
因為 new 對象的時候需要調(diào)用這個構造方法,但是私有的無法訪問到,就調(diào)用不了,所以就無法通過new的方式來創(chuàng)建類的實例化對象,即使用類的類類型的newInstarce()方法來實例化對象也會拋出異常,如圖所示
總結:構造方法的訪問修飾符為私有的(private)的時候,就無法實例化該類了,除非重構個公開的有參構造方法,并調(diào)用這個有參的構造方法來實現(xiàn)實例化類的對象。
如下,創(chuàng)建一個Student類
public?class?Student?{ private?Student()?{?//?私有的無參構造方法 } public?Student(String?name)?{?//?重構一個?公開的?有參?構造方法 System.out.println(name); } }
實例化對象時如下圖所示。
昔日情瞳
因為new 是靜態(tài)加載類對象,需要調(diào)用無參的構造方法,而Void的無參構造方法是私有的,所有不能直接new出來。如果要實例化,只能通過Class.forName()方式。
舉報
反射,Java高級開發(fā)必須要懂的知識點,學好Java高級課程的基礎
1 回答void的關鍵字是類嗎?為什么也能有類類型?
1 回答創(chuàng)建類類型的對象
4 回答java.lang.Class也可以看成是一個對象吧,那這個對象的類是誰呢?是它自己嗎?
3 回答靜態(tài)成員也可以是對象吧
6 回答為什么要Foo類型轉換呢 ?本來c1.newInstance()就是Foo類的對象,那么Foo foo不也是Foo的嗎 都一樣的類型為什么要轉換呢 ?求大神解釋啊@
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2017-02-16
因為Void這個類的無參構造方法是私有的(private),如圖所示
因為 new 對象的時候需要調(diào)用這個構造方法,但是私有的無法訪問到,就調(diào)用不了,所以就無法通過new的方式來創(chuàng)建類的實例化對象,即使用類的類類型的newInstarce()方法來實例化對象也會拋出異常,如圖所示
總結:構造方法的訪問修飾符為私有的(private)的時候,就無法實例化該類了,除非重構個公開的有參構造方法,并調(diào)用這個有參的構造方法來實現(xiàn)實例化類的對象。
如下,創(chuàng)建一個Student類
實例化對象時如下圖所示。
2016-11-08
因為new 是靜態(tài)加載類對象,需要調(diào)用無參的構造方法,而Void的無參構造方法是私有的,所有不能直接new出來。如果要實例化,只能通過Class.forName()方式。