999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

JAVA語言中構造方法的繼承與重載探討

2010-12-31 00:00:00陽小蘭,錢程
電腦知識與技術 2010年21期

摘要:在JAVA語言中,構造方法占有重要和特殊的地位。該文從定義入手,通過實例對JAVA中構造方法的繼承和重載問題作了深入的探討,使讀者看后能對這部分知識有一個深刻的理解。

關鍵詞:JAVA語言;繼承;重載;this;super

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)21-6114-03

Discuss on Inheritance and Overloading of Construction Method in JAVA Language

YANG Xiao-lan, QIAN Cheng

(College of Information Engineering, Wuhan University of Science and Technology Zhongnan Branch, Wuhan 430223, China)

Abstract: Construction Method hasan important and special place in java language. based on the definitions, thearticle has carried on the deep discussion on the problem ofinheritanceandoverloading of construction methodin JAVAlanguageby example, after the reader to see this part of knowledge can have a profound understanding.

Key words: JAVA language; inheritance; overloading; this; super

在面向對象的程序設計中,一個類的構造方法用于創建對象時對對象的初始化。在說明了一個引用后,要調用new為新對象分配空間,也就是要調用構造方法。在JAVA語言中,使用構造方法是生成實例對象的唯一方法。鑒于構造方法在JAVA中的特殊地位,在用JAVA編程時,不可避免的要用到構造方法。很多初學者在JAVA構造方法的繼承和重載問題上感到有困難,甚至對構造方法是否能被繼承眾說不一,本文就JAVA語言中構造方法的繼承和重載問題作深入探討,希望能給讀者編程時帶來方便。

1 構造方法的重載

和類的其他成員方法可以重載一樣,類的構造方法也可以重載。構造方法的重載就是在同一個類中定義多個不同參數的構造方法,以適用于創建含有不同參數的對象時使用。這些構造方法或形參類型不同,或形參個數不同。例如:對于Student學生類,類中有兩數據成員name,score。可定義如下不同的構造方法來創建不同的學生對象。

Student(String s,double n);

Student(String s);

Student( );

當一個類中存在多個參數不同的構造方法,由類創建對象時,系統會自動根據對象實參的數目、類型和順序來確定調用哪一個構造方法來完成對新對象的初始化工作。例如:

Student s1=new Student(“王敏”, 91.5);//調用第一個構造方法

Student s2=new Student(“張亮”);//調用第二個構造方法

Student s3=new Student( );//調用第三個構造方法

同一個類中多個重載的構造方法也可以相互調用。當類中的一個構造方法需要調用另一個構造方法時,可以使用this( )關鍵字, this( )關鍵字根據需要可以帶參數,也可以不帶參數。該調用語句應該出現在構造方法的第一個可執行語句的位置上??慈缦聦嵗?

public class Student

{ String name;

double score;

public Student( String s, double n )

{ name=s; score=n;}

public Student( String s )

{this(s, 90.5); } //調用第一個構造方法

public Student( double n)

{this(“張立”); } //調用第二個構造方法

}

從上例可以看出:使用this()關鍵字調用同類的其他構造方法,其優點是提高對已有代碼的利用程度,減少代碼的重復書寫,從而提高程序的抽象程度。

2 構造方法的繼承

面向對象的程序設計語言的一個重要特點就是通過繼承而使代碼得到重用。我們知道JAVA中普通的成員方法可以被繼承,那么JAVA中的構造方法是否可以被繼承呢?對于這個問題,網絡上眾說紛紜,在這里,我們通過一些實例來說明構造方法的繼承問題。

實踐證明:子類可以繼承父類的構造方法,但應遵循以下的規則:

2.1 子類可以無條件地繼承父類的無參構造方法

如果子類需要用到無參構造方法,父類一定要有無參的構造方法給子類繼承。看下面的例1:

importjava.io.*;

class Sup_class

{ public Sup_class( intx)

{System.out.println(“我是父類中有參數的構造方法 !“+x); }

}

class Sub_class extends Sup_class

{ public Sub_class( )

{System.out.println(“我是子類的構造方法!”);}

}

public classMain_class

{ public static void main(String args[])

{ Sub_classm=new Sub_class( ); }

}

編譯該程序時,顯示如圖1所示結果。

從顯示結果可以看出:出現錯誤的原因是Sup_class類中缺少一個名為Sup_class()的構造方法。現在Sup_class類中增加一個無參的構造方法如下:

public Sup_class( )

{ System.out.println(“我是父類中無參的構造方法!”); }

再次編譯該程序,程序順利通過,結果如圖2所示。

當然,如果子類中不需要使用無參的構造方法,則父類也可以沒有無參的構造方法。

2.2 關于父類與子類構造方法的執行順序

如果子類自己沒有定義構造方法,則子類將繼承父類無參的構造方法作為自己的構造方法;如果子類自己定義了構造方法,則在子類創建新對象時,則先執行來自繼承父類的無參構造方法,再執行自己的構造方法。

在上述例1程序中,當在父類中增加了一個無參的構造方法:

public Sup_class( )

{ System.out.println(“我是父類中無參的構造方法!”); } 后,程序編譯正確,運行結果如圖2。從圖2顯示的運行結果可以看出:在主類中當執行Sub_classm=new Sub_class( );語句時,即創建子類的無參對象時,程序先調用來自繼承父類的無參構造方法Sup_class( ),得到結果“我是父類中無參的構造方法!”;再調用子類自己的構造方法Sub_class( ),得到結果“我是子類的構造方法!”。

2.3 對于有參的構造方法,子類可以通過在自身的構造方法中使用super( )來調用相應的構造方法

但這個調用語句只能出現在子類構造方法的第一個可執行語句。 具體應用見下面的例2。

3 構造方法繼承與重載的綜合舉例

例2:構造方法繼承與重載的綜合舉例如下:

class AA

{ public AA( )

{ System.out.println(“What’s your name?”); }

public AA(String s)

{this( );// 調用構造方法AA( )

System.out.println(“I am ”+s);

}

}

class BB extends AA

{ public static void main(String args[])

{BBb=new BB(“John”); }

public BB(String s)

{super(s); //調用父類的構造方法AA(String s)

System.out.println(“How are you?”);

}

public BB( )

{this(“I am Merry!”); }

}

該程序運行結果如圖3所示。

在該例中,父類AA中定義了兩個重載的構造方法AA( )和AA(String s),在構造方法AA(String s)中調用調用另一個構造方法AA ( )的語句是this( ),且必須出現在第一個可執行語句的位置上。

在子類BB中也定義兩個重載的構造方法BB( )和BB(String s)。在BB(String s)中通過語句super(s)調用父類的構造方法AA(String s),super(s)語句也必須出現在第一個可執行的位置上。

4 結束語

在JAVA語言中,構造方法占有非常重要和特殊的地位。在使用JAVA語言編寫程序時,不可避免的要用到JAVA構造方法重載和繼承的有關知識。對于一個用JAVA編程的程序員來說,熟練掌握有關JAVA構造方法的繼承和重載問題,是進行JAVA程序開發的一個必備的基本功。

參考文獻:

[1] 朱福喜.JAVA語言基礎教程[M].北京:清華大學出版社,2008.

[2] 趙海廷.Java語言程序設計[M].武漢:武漢大學出版社,2005.

[3] Eckel B.Java編程思想[M].侯捷,譯.北京:機械工業出版社,2002

[4] 李誠.Java2簡明教程[M].2版.北京:清華大學出版社,2004.

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 国产女人18水真多毛片18精品 | 国产在线观看精品| 第一区免费在线观看| 毛片免费高清免费| 亚洲色图欧美在线| 国产人人乐人人爱| 亚洲中文字幕国产av| 亚洲一级无毛片无码在线免费视频| 97se综合| 亚洲成人www| a级免费视频| 狼友视频一区二区三区| 国产精品网址在线观看你懂的| 超碰91免费人妻| 日韩精品一区二区深田咏美| 亚洲av无码专区久久蜜芽| 亚洲91在线精品| 91青青草视频| 超碰91免费人妻| 国产在线观看高清不卡| 国产精品亚洲片在线va| 欧美激情视频一区二区三区免费| 精品福利网| 成人福利在线观看| 国产三级a| 亚洲精品第1页| 国产无遮挡猛进猛出免费软件| 先锋资源久久| 国产黄在线观看| 免费毛片a| 四虎永久在线精品国产免费 | 国产九九精品视频| 精品自窥自偷在线看| 在线亚洲小视频| 国产综合在线观看视频| 午夜精品一区二区蜜桃| 伊人久久综在合线亚洲2019| 玩两个丰满老熟女久久网| 亚洲欧洲自拍拍偷午夜色无码| 国产精品一区二区在线播放| 日本91在线| 亚洲天堂视频网站| 午夜欧美在线| 性色在线视频精品| 国产白浆在线| 国产一级在线播放| 2022国产无码在线| 美女被操黄色视频网站| 久精品色妇丰满人妻| 亚洲人成网线在线播放va| 亚洲精品片911| 麻豆国产在线不卡一区二区| 草草影院国产第一页| 亚洲精品无码人妻无码| 中文无码精品A∨在线观看不卡| 99久久免费精品特色大片| 国产午夜不卡| 午夜毛片免费看| 久久久波多野结衣av一区二区| 久久人妻系列无码一区| 欧美中出一区二区| 1024国产在线| 青青草国产免费国产| 久久一色本道亚洲| 亚洲欧美成人在线视频| 色哟哟色院91精品网站| 欧美精品二区| 一区二区三区毛片无码| 日韩亚洲综合在线| 亚洲bt欧美bt精品| 中文字幕 91| 色偷偷男人的天堂亚洲av| 亚洲AV无码乱码在线观看代蜜桃| 国产真实乱子伦精品视手机观看 | av午夜福利一片免费看| 亚洲人成网站在线播放2019| 亚洲天堂日韩在线| 國產尤物AV尤物在線觀看| 日韩av高清无码一区二区三区| 99久久精品无码专区免费| 欧美中文字幕第一页线路一| 国产天天色|