日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java填空题 在非静态成员方法中_Java学习(四): 类的使用

發(fā)布時間:2025/3/19 java 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java填空题 在非静态成员方法中_Java学习(四): 类的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 類

1.1 類的定義

[修飾符]?class?類名?{????//?零或多個構(gòu)造器定義...????????//?零或多個Field...????????//?零或多個方法...}
  • 修飾符: 如public,private及許多其他修飾符
  • 類名,并且按慣例首字母要大寫。
  • 父類(超類)的名稱,都要在前面加上關(guān)鍵字extends。一個類只能繼承自一個父類。
  • 被該類實現(xiàn)的接口列表(用逗號進(jìn)行分隔),在接口前面加上關(guān)鍵字implements。一個類可以實現(xiàn)多個接口。
  • 類體,用花括號{}包圍。

1.2 定義MyClass類

public?class?MyClass?{????/**????*?@Description:?靜態(tài)常量????*/????public?final?static?Double?PI?=?3.1415;????/**?????*?@Description:?名稱(成員變量)?????*/????private?String?name;????/**?????*?@Description:?設(shè)置名稱(成員方法)?????*/????public?void?setName(String?name)?{????????this.name?=?name;????}????/**?????*?@description:?獲取名稱(成員方法)?????**/????public?String?getName()?{????????return?this.name;????}????/**?????*?@Description:?無參構(gòu)造方法?????*/????public?MyClass()?{????????System.out.println("無參構(gòu)造方法....");????}????public?static?void?staticMethod(){????????System.out.println("這是個靜態(tài)方法");????}????/**?????*?@description:有參構(gòu)造方法?????**/????public?MyClass(String?name)?{????????this.name?=?name;????????System.out.println("有參構(gòu)造方法....");????}}

1.3 調(diào)用MyClass類

1.3.1 實例化調(diào)用

MyClass?classTest?=?new?MyClass();classTest.setName("小明");String?name?=?classTest.getName();System.out.println(name);/*輸出:無參構(gòu)造方法....小明*/

1.3.2 靜態(tài)調(diào)用

//調(diào)用靜態(tài)成員System.out.println(MyClass.PI);//調(diào)用靜態(tài)方法MyClass.staticMethod();/*輸出:無參構(gòu)造方法....小明*/

雖然靜態(tài)成員也可以使用"對象.靜態(tài)成員"的形式進(jìn)行調(diào)用,但通常不建議用這樣的形式,因為這樣容易混淆靜態(tài)成員和非靜態(tài)成員。

  • 測試有參構(gòu)造方法
MyClass?classTest2?=?new?MyClass("張三");System.out.println(classTest2.getName());/*輸出:有參構(gòu)造方法....張三*/

1.4 類方法分析

[修飾符]?返回類型?方法名稱(方法參數(shù)列表){????//?方法體}?
  • 返回類型: 方法所返回的數(shù)據(jù)值的數(shù)據(jù)類型,若方法不返回值,用void

1.4.1 方法重載

Java語言支持“重載”方法,并且Java能夠根據(jù)不同的“方法簽名”來區(qū)分重載的方法。這意味著在一個類中,可以有相同名稱但具有不同參數(shù)列表的方法(當(dāng)然會有一些限定條件,這將在“接口和繼承”中討論)。

代碼示例

public?class?DrawDate{????//聲明繪制字符串的方法????public?void?draw(String?s){??????????????????//?...????}????//聲明繪制整數(shù)的方法????public?void?draw(int?i){????????//?...????}?????//聲明繪制雙精度小數(shù)的方法????public?void?draw(double?f){????????//?...????}????//聲明繪制一個整數(shù)和一個小數(shù)的方法????public?void?draw(int?i?,?double?f){???????????//?...????}}

1.4.2 傳遞任意數(shù)量的參數(shù)

可以使用“可變參數(shù)”來傳遞任意數(shù)量的值到一個方法。當(dāng)程序員不知道有多少個特定類型的參數(shù)要被傳遞給方法時,使用可變參數(shù)。可變參數(shù)是手工創(chuàng)建一個數(shù)組的簡潔方法。 要使用可變參數(shù),在最后一個參數(shù)的類型后面跟上省略號“…”,然后是一個空格,再接著是參數(shù)名。具有這種可變參數(shù)的方法可以接收任意數(shù)量的該類型的參數(shù),包括空參數(shù)。例如下面代碼:

public?Polygon?polygonFrom(Point...?corners)?{????//corners參數(shù)被當(dāng)作數(shù)組處理,可以調(diào)用數(shù)組屬性length獲得長度????int?numberOfSides?=?corners.length;????//聲明兩個變量????double?squareOfSide1,?lengthOfSide1;????squareOfSide1?=?(corners[1].x?-?corners[0].x)*(corners[1].x?-?corners[0].x)?+?(corners[1].y?-?corners[0].y)*(corners[1].y?-?corners[0].y)?;????lengthOfSide1?=?Math.sqrt(squareOfSide1);?//調(diào)用Math類的靜態(tài)方法求平方根????…}

可以看出來,在上面這個方法中,corners被當(dāng)做數(shù)組使用。調(diào)用這個方法時,既可以使用一個數(shù)組,也可以使用一系列的參數(shù)。不管使用哪種形式,方法中的代碼都會將參數(shù)作為一個數(shù)組對待。

1.5 構(gòu)造器

語法

public?類名稱(方法參數(shù)列表){????//?方法體}?
  • 構(gòu)造器與類同名
  • 每個類可以有一個以上的構(gòu)造器
  • 構(gòu)造器可以有 0 個、1 個或多個參數(shù)
  • 構(gòu)造器沒有返回值
  • 構(gòu)造器總是伴隨著 new 操作一起調(diào)用

1.5.1 無參構(gòu)造器

????/**????*?@description:無參構(gòu)造器?????**/????public?MyClass()?{????????System.out.println("無參構(gòu)造器....");????}

1.5.2 有參構(gòu)造器

????/**?????*?@description:有參構(gòu)造器?????**/????public?MyClass(String?name)?{????????this.name?=?name;????????System.out.println("有參構(gòu)造器....");????}

2. Object類

Object類是Java一個比較特殊的類,Java中所有的類從根本上都繼承自O(shè)bject類。Object是Java中唯一沒有父類的類。

如果一個類沒有使用extends關(guān)鍵字明確標(biāo)識繼承另外一個類,那么這個類就默認(rèn)繼承Object類

Object類中常用的方法

3. 內(nèi)部類

所謂的內(nèi)部類就是指在一個類的內(nèi)部又定義了其他類的情況。如果在類Outer的內(nèi)部再定義一個類Inner,此時類Inner就稱為內(nèi)部類,而類Outer則稱為外部類。內(nèi)部類可聲明為public或private。當(dāng)內(nèi)部類聲明為public或private時,對其訪問的限制與成員變量和成員方法完全相同。

3.1 定義

權(quán)限標(biāo)示符?class?外部類名稱{????...????????權(quán)限標(biāo)示符?class?內(nèi)部類名稱?{????????...????}}

示例:

//?外部類public?class?Outer{????//?外部類屬性?int?score=95;??//?外部類方法,調(diào)用內(nèi)部類方法?void?inst(){??Inner?in=new?Inner();??in.display();?}?//?內(nèi)部類?public?class?Inner{??//在內(nèi)部類中聲明name屬性??String?name="張三";??//?內(nèi)部類方法??void?display(){???//內(nèi)部類訪問外部類中的屬性???System.out.println("成績:score="+score);??}?}}//?測試使用public?class?ObjectInnerDemo{?public?static?void?main(String[]args){??Outer?outer=new?Outer();??outer.inst();?//輸出:成績:score=95?}}

3.2 內(nèi)部類主要作用

  • 內(nèi)部類提供了更好的封裝,可以把內(nèi)部類隱藏在外部類之內(nèi),不允許同一個包中的其他類訪問該類。
  • 內(nèi)部類成員可以直接訪問外部類的私有數(shù)據(jù),因為內(nèi)部類被當(dāng)成其外部類成員,同一個類的成員之間可以相互訪問。但外部類不能訪問內(nèi)部類的實現(xiàn)細(xì)節(jié),例如內(nèi)部類的成員變量。
  • 匿名內(nèi)部類適合用于創(chuàng)建那些僅需要一次的類

3.3 使用static定義的內(nèi)部類就是外部類

如果使用static來修飾一個內(nèi)部類,則這個內(nèi)部類就屬于外部類本身,而不屬于外部類的某個對象。因此使用static修飾的內(nèi)部類被稱為類內(nèi)部類,有的地方也稱為靜態(tài)內(nèi)部類。

static關(guān)鍵字的作用是把類的成員變成類相關(guān),而不是實例相關(guān),即static修飾的成員屬于整個類,而不屬于單個對象。

靜態(tài)內(nèi)部類可以包含靜態(tài)成員,也可以包含非靜態(tài)成員。根據(jù)靜態(tài)成員不能訪問非靜態(tài)成員的規(guī)則,靜態(tài)內(nèi)部類不能訪問外部類的實例成員,只能訪問外部類的類成員。即使是靜態(tài)內(nèi)部類的實例方法也不能訪問外部類的實例成員,只能訪問外部類的靜態(tài)成員。

靜態(tài)內(nèi)部類是外部類的一個靜態(tài)成員,因此外部類的靜態(tài)方法、靜態(tài)初始化也可以使用靜態(tài)內(nèi)部類來定義變量、創(chuàng)建對象等。

外部類依然不能直接訪問靜態(tài)內(nèi)部類的成員,但可以使用靜態(tài)內(nèi)部類的類名作為調(diào)用者來訪問靜態(tài)內(nèi)部類的類成員,也可以使用靜態(tài)內(nèi)部類對象作為調(diào)用者來訪問靜態(tài)內(nèi)部類的實例成員。

使用示例:

class?StaticInnerClassTest?{????//?外部類實例成員????private?int?propl=5;????//?外部類靜態(tài)成員????private?static?int?prop2=9;????????void?display()?{?????????StaticInnerClass?in=new?StaticInnerClass();????????in.display();????}????//?靜態(tài)內(nèi)部類????static?class?StaticInnerClass?{????????//內(nèi)部類里的靜態(tài)成員????????private?static?int?age;????????????????public?void?display()?{????????????//下面代碼出現(xiàn)錯誤-靜態(tài)內(nèi)部類無法訪問外部類的實例成員????????????//?System.out.println(propl);????????????????????????//下面代碼正常????????????System.out.println(prop2);????????}????}}public?class?ObjectStaticDemo?{????public?static?void?main(String[]args)?{????????StaticInnerClassTest?outer=new?StaticInnerClassTest();????????outer.display();?//?輸出:9????}}

3.4 匿名內(nèi)部類

匿名內(nèi)部類由于沒有名字,所以它的創(chuàng)建方式也比較特別。創(chuàng)建格式如下。

new?父類構(gòu)造器(參數(shù)列表)|實現(xiàn)接口(){????//匿名內(nèi)部類的類體部分}

匿名內(nèi)部類我們必須要繼承一個父類或者實現(xiàn)一個接口。同時它沒有class關(guān)鍵字,這是因為匿名內(nèi)部類是直接使用new來生成一個對象的引用。當(dāng)然這個引用是隱式的。

使用示例

abstract?class?Bird?{????private?String?name;????public?String?getName()?{????????return?name;????}????public?void?setName(String?name)?{????????this.name=name;????}????public?abstract?int?fly();}public?class?AnonymousInnerClass?{????public?void?test(Bird?bird)?{????????System.out.println(bird.getName()+"最高能飛"+bird.fly()+"米");????}????????public?static?void?main(String[]args)?{????????//?聲明一個名為?animal?的AnonymousInnerClass對象????????AnonymousInnerClass?animal=new?AnonymousInnerClass();????????????????//?調(diào)用實例方法,并傳入一個匿名對象????????animal.test(?new?Bird()?{????????????public?int?fly()?{????????????????return?1000;????????????}????????????public?String?getName()?{????????????????return"小鳥";????????????}????????}????}}

代碼詳解

在AnonymousInnerClass類中,test()方法接受一個Bird類型的參數(shù),同時我們知道一個抽象類是沒有辦法直接new的,我們必須要先有實現(xiàn)類才能new出來它的實現(xiàn)類實例。所以在main方法中直接使用匿名內(nèi)部類來創(chuàng)建一個Bird實例。 匿名內(nèi)部類不能是抽象類,所以必須要實現(xiàn)它的抽象父類或者接口里面所有的抽象方法。

匿名內(nèi)部類存在一個缺陷,就是它僅能被使用一次,創(chuàng)建匿名內(nèi)部類時它會立即創(chuàng)建一個該類的實例,該類的定義會立即消失,所以匿名內(nèi)部類不能夠被重復(fù)使用。

4. 匿名對象

匿名對象,顧名思義就是沒有明確的聲明的對象。讀者也可以簡單地理解為只使用一次的對象,即沒有任何一個具體的對象名稱引用它

使用示例:

class?Person{?private?String?name="張三";?private?int?age=25;?public?String?talk(){??return"我是:"+name+",今年:"+age+"歲";?}}public?class?AnonymousObject?{?public?static?void?main(String[]args)?{???//?使用匿名對象???System.out.println(new?Person().talk());?}}

總結(jié)

以上是生活随笔為你收集整理的java填空题 在非静态成员方法中_Java学习(四): 类的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。