本文目錄一覽:
- 1、_’ title=’JAVA的構造函數是怎麼寫的。萬分感謝。路過的請不要嘲笑%>_’>JAVA的構造函數是怎麼寫的。萬分感謝。路過的請不要嘲笑%>_
- 2、java的構造函數
- 3、Java中的構造函數繼承
- 4、java語言中,構造函數的作用是什麼
- 5、Java中,什麼是構造函數?
_’>JAVA的構造函數是怎麼寫的。萬分感謝。路過的請不要嘲笑%>_
JAVA的構造函數是:SetLocal EnableDelayedExpansion
set classpath=.
for %%c in (lib\*.jar) do set classpath=!classpath!;%%c
set classpath=%classpath%;./classes;
java com.ham.server.Server。
1、無參構造方法
無參構造方法又分為隱式無參構造方法和顯示無參構造方法。
隱式無參構造方法
在定義類的時候,如果沒有給類定義一個構造方法,Java編譯器在編譯時會默認提供一個隱式的構造方法,它沒有任何參數,並且有一個空的方法體。例如,Person類中隱含一個無參構造方法,在main方法中可以通過new關鍵字來調用此默認的構造方法,代碼如下:
2、顯式無參構造方法
隱式無參構造方法是由系統提供的,無法修改其內容。但有時需要在調用這個構造方法時初始化類成員屬性或執行一些操作,要實現這個需求,就需要為它定義一個顯式無參構造方法,修改上述代碼如下:
3、顯示有參構造方法
構造並初始化對象是構造方法的作用,所以有時需要給這個方法傳入一些參數,定義一個顯示的有參構造方法。例如:
java的構造函數
構造方法用public修飾,因為建立這個類的實例對象的時候系統需要調用它,但是沒有返回值類型,構造方法的特點就是:
1.和類名相同
2.不可使用return返回數值
3.沒有返回類型修飾詞
符合的就是構造函數,當你建立這個類的實例對象的時候如Fruit s=new Fruit();這樣寫的時候,系統就會調用第一個構造方法,應為它沒有傳任何參數,要是這樣寫Fruit s=new Fruit(new String(”aaa”),double w);系統會自動調用第二個構造方法。一個類可以有多個構造方法。
void setName(String n)
{
name = n;
}
String getName()
{
return name;
}
這個分開寫主要是為了安全性考慮,不讓其他人直接調用修改成員變量,只通過類的內部方法進行調用。你這個裏面的name應該用private修飾!
我知道的就這麼多了!
Java中的構造函數繼承
專家讀書筆記 希望能夠對大家學習java有所幫助
每個子類構造方法的第一條語句 都是隱含地調用super() 如果父類沒有這種形式的構造函數 那麼在編譯的時候就會報錯
這句話怎麼理解
所有代碼都經過測試 測試環境
java version rc
Java(TM) Runtime Environment Standard Edition (build rc b )
Java HotSpot(TM) Client VM (build rc b mixed mode)
如大家發現任何錯誤 或有任何意見請不吝賜教
缺省構造函數的問題 base類是父類 derived類是子類 首先要說明的是由於先有父類後有子類 所以生成子類之前要首先有父類
class是由class的構造函數constructor產生的 每一個class都有構造函數 如果你在編寫自己的class時沒有編寫任何構造函數 那麼編譯器為你自動產生一個缺省default構造函數 這個default構造函數實質是空的 其中不包含任何代碼 但是一牽扯到繼承 它的問題就出現了
如果父類base class只有缺省構造函數 也就是編譯器自動為你產生的 而子類中也只有缺省構造函數 那麼不會產生任何問題 因為當你試圖產生一個子類的實例時 首先要執行子類的構造函數 但是由於子類繼承父類 所以子類的缺省構造函數自動調用父類的缺省構造函數 先產生父類的實例 然後再產生子類的實例 如下
class base{
}
class derived extends base{
public static void main(String[] args){
derived d=new derived();
}
}
下面我自己顯式地加上了缺省構造函數
class base{
base(){
System out println( base constructor );
}
}
class derived extends base{
derived(){
System out println( derived constructor );
}
public static void main(String[] args){
derived d=new derived();
}
}
執行結果如下 說明了先產生base class然後是derived class
base constructor
derived constructor
我要說明的問題出在如果base class有多個constructor
而derived class也有多個constructor 這時子類中的構造函數缺省調用那個父類的構造函數呢?答案是調用父類的缺省構造函數 但是不是編譯器自動為你生成的那個缺省構造函數而是你自己顯式地寫出來的缺省構造函數
class base{
base(){
System out println( base constructor );
}
base(int i){
System out println( base constructor int i );
}
}
class derived extends base{
derived(){
System out println( derived constructor );
}
derived(int i){
System out println( derived constructor int i );
}
public static void main(String[] args){
derived d=new derived();
derived t=new derived( );
}
}
D: java thinking think java derived
base constructor
derived constructor
base constructor
derived constructor int i
如果將base 類的構造函數注釋掉 則出錯
class base{
// base(){
// System out println( base constructor );
// }
base(int i){
System out println( base constructor int i );
}
}
class derived extends base{
derived(){
System out println( derived constructor );
}
derived(int i){
System out println( derived constructor int i );
}
public static void main(String[] args){
derived d=new derived();
derived t=new derived( );
}
}
D: java thinking think javac derived java
derived java: : cannot resolve symbol
symbol : constructor base ()
location: class base
derived(){
^
derived java: : cannot resolve symbol
symbol : constructor base ()
location: class base
derived(int i){
errors
說明子類中的構造函數找不到顯式寫出的父類中的缺省構造函數 所以出錯
那麼如果你不想子類的構造函數調用你顯式寫出的父類中的缺省構造函數怎麼辦呢?
如下例
class base{
// base(){
// System out println( base constructor );
// }
base(int i){
System out println( base constructor int i );
}
}
class derived extends base{
derived(){
super( );
System out println( derived constructor );
}
derived(int i){
super(i);
System out println( derived constructor int i );
}
public static void main(String[] args){
derived d=new derived();
derived t=new derived( );
}
}
D: java thinking think java derived
base constructor int i
derived constructor
base constructor int i
derived constructor int i
super(i)表示父類的構造函數base(i)請大家注意一個是super(i)一個是super( ) 大家想想是為什麼??
lishixinzhi/Article/program/Java/hx/201311/27071
java語言中,構造函數的作用是什麼
Java類至少包含一個構造器,如果沒有定義,那麼系統會為這個類提供一個無參構造器。
構造函數是在創建給定類型的對象時執行的類方法,它通常用於初始化數據成員
如果該類中定義了一個私有的構造函數,那麼這個類就不能被new
Java中,什麼是構造函數?
當新對象被創建的時候,構造函數會被調用。每一個類都有構造函數。在程序員沒有給類提供構造函數的情況下,Java編譯器會為這個類創建一個默認的構造函數。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/256710.html