• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Java構(gòu)造方法解析

      2016-03-13 20:39:54黃艷峰
      河南科技 2016年3期
      關(guān)鍵詞:構(gòu)造方法面向?qū)ο?/a>

      黃艷峰 陳 濤

      (商丘師范學(xué)院 計算機與信息技術(shù)學(xué)院,河南 商丘 476000)

      ?

      Java構(gòu)造方法解析

      黃艷峰陳濤

      (商丘師范學(xué)院計算機與信息技術(shù)學(xué)院,河南商丘476000)

      摘要:構(gòu)造方法是面向?qū)ο蟪绦蛑性趧?chuàng)建對象時系統(tǒng)自動調(diào)用的一個方法,與其他方法相比,該方法在語法和應(yīng)用上都具有一些特殊性。基于此,重點介紹Java語言中構(gòu)造方法的特點、定義及使用方法。

      關(guān)鍵詞:Java;構(gòu)造方法;面向?qū)ο?/p>

      1 構(gòu)造方法的引入

      Java是面向?qū)ο蟮恼Z言,類是構(gòu)成Java程序的基本單元。面對一個特定的問題領(lǐng)域,需要抽象出該問題領(lǐng)域的對象,然后根據(jù)問題領(lǐng)域的需要,從這些對象身上抽象出屬性和方法,把它們包裝成類。而類只是對象的一個模板,要想實現(xiàn)其具體的功能,還要創(chuàng)建出該類的對象。創(chuàng)建一個類的對象的語法是:類名對象名=new構(gòu)造方法([參數(shù)1,參數(shù)2,…….]);這條語句在執(zhí)行時包含3個步驟:①在棧中為該對象名即對象的引用分配內(nèi)存,也就是類名對象名這部分執(zhí)行的操作;②利用new運算符在堆內(nèi)存中為Java對象的各個屬性分配內(nèi)存,并把該內(nèi)存的首地址賦值給對象名,即=new這部分執(zhí)行的操作;③調(diào)用構(gòu)造方法完成對象的初始化,給對象的各個屬性賦初值。一個對象可能包含若干個屬性,需要若干條賦值語句,把這若干個賦初值的語句組合成一個方法在創(chuàng)建對象時一次性執(zhí)行,這個方法就是構(gòu)造方法[1]。

      2 構(gòu)造方法的使用

      2.1構(gòu)造方法的特點及定義

      構(gòu)造方法是一種比較特殊的方法,其特殊性主要體現(xiàn)在以下幾個方面:①構(gòu)造方法的方法名與類名相同[2];②構(gòu)造方法沒有返回值類型,在構(gòu)造方法的方法體里不能出現(xiàn)return語句;③構(gòu)造方法的調(diào)用通常在創(chuàng)建對象時由系統(tǒng)自動調(diào)用;④構(gòu)造方法通常用來初始化類的非靜態(tài)屬性。

      一個類中可以定義多個構(gòu)造方法,既可以不帶參數(shù)也可以帶參數(shù),如:

      class Student{

      String name;

      int age;

      Student(){

      name="張三";

      age=21;}}

      public class TestConstructor{

      public static void main(String[]args){

      Student s1=new Student();

      Student s2=new Student();}}

      假如一個類中只定義一個無參的構(gòu)造方法,如上例,那么創(chuàng)建出來的所有對象s1、s2的屬性值都一樣,這顯然不符合實際,為了創(chuàng)建出不同屬性值的對象,我們需要添加多個不同參數(shù)的構(gòu)造方法,

      class Student{

      String name;

      int age;

      Student(){

      name="張三";

      age=21;}

      Student(String n){

      name=n;

      age=23;}

      Student(String n,int a){

      name=n;

      age=a;}}

      再分別創(chuàng)建對象Student s1=new Student(“張三”,21);Student s2=new Student(“李四”,23);通過傳進不同的參數(shù)值,就可以創(chuàng)建出不同屬性值的對象。一個類中可以包含多個不同的構(gòu)造方法,在一個構(gòu)造方法里面可以調(diào)用同類其他的構(gòu)造方法,對同類構(gòu)造方法的調(diào)用,不能使用構(gòu)造方法名,而是使用關(guān)鍵字this,如上例可以改成如下形式:

      class Student{

      String name;

      int age;

      Student(String n,int a){

      name=n;

      age=a;}

      Student(String n){

      this(n,23)}

      Student(){

      this(“張三”,21);}}

      如果在一個類中沒有定義任何一個構(gòu)造方法,則系統(tǒng)會自動創(chuàng)建一個參數(shù)為空,方法體也為空的默認(rèn)構(gòu)造方法,以滿足創(chuàng)建對象的需要,但是如果在程序中一旦定義了一個構(gòu)造方法,系統(tǒng)不會再創(chuàng)建默認(rèn)的構(gòu)造方法。

      2.2子類對父類構(gòu)造方法的調(diào)用

      構(gòu)造方法不能繼承,但是在初始化子類對象時,為了確保繼承自父類的所有屬性被初始化,則在執(zhí)行子類構(gòu)造方法之前,一定要先對父類的構(gòu)造方法進行調(diào)用[3]。子類對父類構(gòu)造方法的調(diào)用分2種情況,一種是默認(rèn)調(diào)用,即程序中不體現(xiàn)出來,這種情況下只能調(diào)用父類無參的構(gòu)造方法,如果父類中沒有定義無參的構(gòu)造方法(系統(tǒng)也不創(chuàng)建),那么一定要顯式調(diào)用。對父類構(gòu)造方法的調(diào)用同樣也不能用方法名,而是用super()形式調(diào)用。如:

      class Art{

      Art(){

      System.out.println("Art()constructor");}}

      class Drawing extends Art{

      Drawing(){

      System.out.println("Drawing()constructor");}}c

      public class Cartoon extends Drawing{

      Cartoon(){

      System.out.println("Cartoon()constructor");}

      public static void main(String[]args){

      Cartoon x=new Cartoon();}}

      本例的輸出結(jié)果是Art()constructor,Drawing()con?structor,Cartoon()constructor,很顯然,在Cartoon類的構(gòu)造方法中并沒有調(diào)用父類Drawing的構(gòu)造方法,同樣在Drawing的構(gòu)造方法中也沒有調(diào)用其父類Art的構(gòu)造方法,這里對父類構(gòu)造方法的調(diào)用是隱含的,是系統(tǒng)自動調(diào)用的。而如果把Drawing類的構(gòu)造方法修改成Drawing (int i){System.out.println("Drawing()constructor");,則在Cartoon的構(gòu)造方法中會提示找不到符號Drawing()的錯誤。顯然,這里系統(tǒng)調(diào)用的是Drawing(),即父類無參的構(gòu)造方法。而此時Drawing中的帶參數(shù)的構(gòu)造方法需要在Cartoon類中用super(6)(帶一個任意整數(shù)的參數(shù),如1,2,3,…….)來顯式調(diào)用。

      3 結(jié)語

      構(gòu)造方法是一種特殊的方法,主要完成對象初始化的工作,為了滿足創(chuàng)建對象時的不同需求,在同一個類中可以定義多個不同參數(shù)的構(gòu)造方法,即對構(gòu)造方法進行重載,為了在子類中完成繼承自父類的屬性的初始化,在創(chuàng)建子類對象時需要首先調(diào)用父類的構(gòu)造方法。

      參考文獻(xiàn):

      [1]印旻.Java語言與面向?qū)ο蟪绦蛟O(shè)計(第2版)[M].北京:清華大學(xué)出版社,2013.

      [2]潘浩.Java程序設(shè)計教程[M].北京:北京郵電大學(xué)大學(xué)出版社,2008.

      [3]Y.Daniel Liang.Java語言與面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ)篇[M].李娜譯.北京:機械工業(yè)出版社,2012.

      中圖分類號:TP312

      文獻(xiàn)標(biāo)識碼:A

      文章編號:1003-5168(2016)02-0037-02

      收稿日期:2016-01-27

      作者簡介:黃艷峰(1977-),女,副教授,研究方向:計算機應(yīng)用。

      Analysis of Java Constructor

      Huang YanfengChen Tao
      (College of Computer and Information Technology,Shanqiu Normal University,Shangqiu Henan 476000)

      Abstract:Construcor is a method that is automatically called when the object is created in the object orient?ed program,and the method has some special characteristics in grammar and application compared with oth?er methods.Based on this,this paper mainly introduced the characteristics,definition and using method in Java language.

      Keywords:Java;constructor;object-oriented

      猜你喜歡
      構(gòu)造方法面向?qū)ο?/a>
      DC-DC變換器分層級構(gòu)造方法
      面向?qū)ο蟮挠嬎銠C網(wǎng)絡(luò)設(shè)計軟件系統(tǒng)的開發(fā)
      電子測試(2018年15期)2018-09-26 06:01:34
      面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
      《夢溪筆談》“甲子納音”構(gòu)造方法的數(shù)學(xué)分析
      幾乎最佳屏蔽二進序列偶構(gòu)造方法
      面向?qū)ο骔eb開發(fā)編程語言的的評估方法
      面向?qū)ο笮畔⑻崛≈杏跋穹指顓?shù)的選擇
      河南科技(2014年10期)2014-02-27 14:09:03
      漢語新術(shù)語構(gòu)造方法的優(yōu)先選擇
      衡水市| 紫阳县| 门头沟区| 明星| 罗甸县| 沁阳市| 二连浩特市| 隆德县| 黑山县| 安多县| 灌云县| 白山市| 吴旗县| 临颍县| 仁化县| 成都市| 张家川| 高安市| 新沂市| 南阳市| 三亚市| 滁州市| 沙湾县| 滦南县| 化德县| 潼关县| 台湾省| 怀远县| 平乡县| 阿城市| 陆河县| 客服| 哈密市| 五华县| 巫山县| 焉耆| 固始县| 澜沧| 台安县| 长宁县| 保德县|