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

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

2016-03-13 20:39:54黃艷峰
河南科技 2016年3期

黃艷峰 陳 濤

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

?

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

黃艷峰陳濤

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

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

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

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

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

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

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

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

一個(gè)類中可以定義多個(gè)構(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è)類中只定義一個(gè)無參的構(gòu)造方法,如上例,那么創(chuàng)建出來的所有對(duì)象s1、s2的屬性值都一樣,這顯然不符合實(shí)際,為了創(chuàng)建出不同屬性值的對(duì)象,我們需要添加多個(gè)不同參數(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)建對(duì)象Student s1=new Student(“張三”,21);Student s2=new Student(“李四”,23);通過傳進(jìn)不同的參數(shù)值,就可以創(chuàng)建出不同屬性值的對(duì)象。一個(gè)類中可以包含多個(gè)不同的構(gòu)造方法,在一個(gè)構(gòu)造方法里面可以調(diào)用同類其他的構(gòu)造方法,對(duì)同類構(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è)類中沒有定義任何一個(gè)構(gòu)造方法,則系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)參數(shù)為空,方法體也為空的默認(rèn)構(gòu)造方法,以滿足創(chuàng)建對(duì)象的需要,但是如果在程序中一旦定義了一個(gè)構(gòu)造方法,系統(tǒng)不會(huì)再創(chuàng)建默認(rèn)的構(gòu)造方法。

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

構(gòu)造方法不能繼承,但是在初始化子類對(duì)象時(shí),為了確保繼承自父類的所有屬性被初始化,則在執(zhí)行子類構(gòu)造方法之前,一定要先對(duì)父類的構(gòu)造方法進(jìn)行調(diào)用[3]。子類對(duì)父類構(gòu)造方法的調(diào)用分2種情況,一種是默認(rèn)調(diào)用,即程序中不體現(xiàn)出來,這種情況下只能調(diào)用父類無參的構(gòu)造方法,如果父類中沒有定義無參的構(gòu)造方法(系統(tǒng)也不創(chuàng)建),那么一定要顯式調(diào)用。對(duì)父類構(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)造方法,這里對(duì)父類構(gòu)造方法的調(diào)用是隱含的,是系統(tǒng)自動(dòng)調(diào)用的。而如果把Drawing類的構(gòu)造方法修改成Drawing (int i){System.out.println("Drawing()constructor");,則在Cartoon的構(gòu)造方法中會(huì)提示找不到符號(hào)Drawing()的錯(cuò)誤。顯然,這里系統(tǒng)調(diào)用的是Drawing(),即父類無參的構(gòu)造方法。而此時(shí)Drawing中的帶參數(shù)的構(gòu)造方法需要在Cartoon類中用super(6)(帶一個(gè)任意整數(shù)的參數(shù),如1,2,3,…….)來顯式調(diào)用。

3 結(jié)語

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

參考文獻(xiàn):

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

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

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

中圖分類號(hào):TP312

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

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

收稿日期:2016-01-27

作者簡(jiǎn)介:黃艷峰(1977-),女,副教授,研究方向:計(jì)算機(jī)應(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

主站蜘蛛池模板: 全部免费毛片免费播放| 天天躁日日躁狠狠躁中文字幕| 999国产精品| 91视频精品| 亚洲午夜天堂| 亚洲午夜国产精品无卡| 国产视频欧美| 日韩美女福利视频| 日韩精品毛片人妻AV不卡| 狼友av永久网站免费观看| 日韩精品久久久久久久电影蜜臀| 9丨情侣偷在线精品国产| 亚洲一级毛片免费观看| 在线观看91精品国产剧情免费| 免费在线国产一区二区三区精品| 亚洲经典在线中文字幕| 美女一级免费毛片| 国产精品页| 免费观看三级毛片| 久视频免费精品6| 欧美在线黄| 又污又黄又无遮挡网站| 99爱在线| 88av在线| 亚洲中文字幕av无码区| 动漫精品啪啪一区二区三区| 72种姿势欧美久久久大黄蕉| 少妇人妻无码首页| 亚洲精品成人7777在线观看| 欧美黄色网站在线看| 欧美日韩一区二区三| 不卡视频国产| 国产丝袜丝视频在线观看| 精品免费在线视频| 91小视频在线| 欧美不卡视频一区发布| 国产真实乱子伦视频播放| 99热国产在线精品99| 亚洲成a∧人片在线观看无码| 福利一区三区| 久久综合亚洲色一区二区三区| 老司国产精品视频91| 特级毛片8级毛片免费观看| 日本午夜视频在线观看| 99久久精品国产麻豆婷婷| av无码一区二区三区在线| 免费一级毛片| 一本大道视频精品人妻| 国产精品手机在线播放| 日韩无码视频专区| 91精品综合| 2020国产免费久久精品99| 国产日韩精品欧美一区灰| 国产农村精品一级毛片视频| 国产欧美日韩18| 国产95在线 | 欧美成人影院亚洲综合图| 福利国产在线| 色老二精品视频在线观看| 欧美亚洲国产日韩电影在线| 亚洲va在线观看| 狠狠色狠狠色综合久久第一次| 91亚洲视频下载| 国产精品性| 亚洲无码日韩一区| 亚洲AV无码乱码在线观看裸奔 | 国产综合在线观看视频| 午夜视频日本| 亚洲欧洲日产国产无码AV| 日韩麻豆小视频| 亚洲精品无码久久毛片波多野吉| 亚洲色图欧美在线| 亚洲日韩高清在线亚洲专区| 国产高清无码第一十页在线观看| 亚洲精品爱草草视频在线| 国产精品丝袜视频| 91精品最新国内在线播放| 欧美综合区自拍亚洲综合绿色 | 日日噜噜夜夜狠狠视频| 91丝袜乱伦| 精品无码国产自产野外拍在线| 又污又黄又无遮挡网站|