摘要:本地類和匿名類一樣,直接聲明在代碼塊里面,可以是主方法,循環(huán)里等等地方姓名血量護(hù)甲移動速度與匿名類的區(qū)別在于,本地類有了自定義的類名新的進(jìn)攻手段地卜師
內(nèi)部類
內(nèi)部類分為四種:
非靜態(tài)內(nèi)部類
靜態(tài)內(nèi)部類
匿名類
本地類
非靜態(tài)內(nèi)部類調(diào)用方法: new 外部類().new 內(nèi)部類()
package charactor; public class Hero { private String name; // 姓名 float hp; // 血量 float armor; // 護(hù)甲 int moveSpeed; // 移動速度 // 非靜態(tài)內(nèi)部類,只有一個(gè)外部類對象存在的時(shí)候,才有意義 // 戰(zhàn)斗成績只有在一個(gè)英雄對象存在的時(shí)候才有意義 class BattleScore { int kill; int die; int assit; public void legendary() { if (kill >= 8) System.out.println(name + "超神!"); else System.out.println(name + "尚未超神!"); } } public static void main(String[] args) { Hero garen = new Hero(); garen.name = "蓋倫"; // 實(shí)例化內(nèi)部類 // BattleScore對象只有在一個(gè)英雄對象存在的時(shí)候才有意義 // 所以其實(shí)例化必須建立在一個(gè)外部類對象的基礎(chǔ)之上 BattleScore score = garen.new BattleScore(); score.kill = 9; score.legendary(); } }靜態(tài)內(nèi)部類
調(diào)用方法: new 外部類.靜態(tài)內(nèi)部類();
因?yàn)闆]有一個(gè)外部類的實(shí)例,所以在靜態(tài)內(nèi)部類里面不可以訪問外部類的實(shí)例屬性和方法
除了可以訪問外部類的私有靜態(tài)成員外,靜態(tài)內(nèi)部類和普通類沒什么大的區(qū)別。
package charactor; public class Hero { public String name; protected float hp; private static void battleWin() { System.out.println("battle win"); } // 敵方的水晶 static class EnemyCrystal { int hp = 5000; // 如果水晶的血量為0,則宣布勝利 public void checkIfVictory() { if (hp == 0) { Hero.battleWin(); // 靜態(tài)內(nèi)部類不能直接訪問外部類的對象屬性 System.out.println(name + " win this game"); } } } public static void main(String[] args) { // 實(shí)例化靜態(tài)內(nèi)部類 Hero.EnemyCrystal crystal = new Hero.EnemyCrystal(); crystal.checkIfVictory(); } }匿名類
package charactor; public abstract class Hero { String name; // 姓名 float hp; // 血量 float armor; // 護(hù)甲 int moveSpeed; // 移動速度 public abstract void attack(); public static void main(String[] args) { ADHero adh = new ADHero(); // 通過打印adh,可以看到adh這個(gè)對象屬于ADHero類 adh.attack(); System.out.println(adh); Hero h = new Hero() { // 當(dāng)場實(shí)現(xiàn)attack方法 public void attack() { System.out.println("新的進(jìn)攻手段"); } }; h.attack(); // 通過打印h,可以看到h這個(gè)對象屬于Hero$1這么一個(gè)系統(tǒng)自動分配的類名 System.out.println(h); } }本地類
本地類可以理解為有名字的匿名類
與內(nèi)部類不一樣的是,內(nèi)部類必須聲明在成員的位置,即與屬性和方法平等的位置。
本地類和匿名類一樣,直接聲明在代碼塊里面,可以是主方法,for循環(huán)里等等地方
package charactor; public abstract class Hero { String name; // 姓名 float hp; // 血量 float armor; // 護(hù)甲 int moveSpeed; // 移動速度 public abstract void attack(); public static void main(String[] args) { // 與匿名類的區(qū)別在于,本地類有了自定義的類名 class SomeHero extends Hero { public void attack() { System.out.println(name + " 新的進(jìn)攻手段"); } } SomeHero h = new SomeHero(); h.name = "地卜師"; h.attack(); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68872.html
摘要:每個(gè)內(nèi)部類都能獨(dú)立地繼承一個(gè)接口,而無論外部類是否已經(jīng)繼承了某個(gè)接口。因此,內(nèi)部類使多重繼承的解決方案變得更加完整。內(nèi)部類中的與其他類一樣是指的本身。但是靜態(tài)內(nèi)部類卻沒有。 問題:內(nèi)部類、靜態(tài)內(nèi)部類區(qū)別、使用場景? 1.靜態(tài)內(nèi)部類可以有靜態(tài)成員(方法,屬性),而非靜態(tài)內(nèi)部類則不能有靜態(tài)成員(方法,屬性)。 2.靜態(tài)內(nèi)部類只能夠訪問外部類的靜態(tài)成員,而非靜態(tài)內(nèi)部類則可以訪問外部類的所有...
摘要:方法內(nèi)部類就是局部內(nèi)部類,一般定義在類的局部位置,它可以訪問當(dāng)前代碼塊及外部類的所有變量。 今天溫習(xí)一下 Java 中的內(nèi)部類,內(nèi)部類一般有如下幾種:靜態(tài)內(nèi)部類、成員內(nèi)部類、匿名內(nèi)部類和方法內(nèi)部類,下文中將主要介紹靜態(tài)內(nèi)部類和成員內(nèi)部類,主要內(nèi)容如下: 概述 靜態(tài)內(nèi)部類 成員內(nèi)部類 匿名內(nèi)部類和方法內(nèi)部類 總結(jié) 概述 顧名思義內(nèi)部類就是在一個(gè)類內(nèi)部定義的類,它是內(nèi)部類是一個(gè)獨(dú)立的類...
內(nèi)部類 內(nèi)部類主要作用 內(nèi)部類提供了更好的封裝,可以吧內(nèi)部類隱藏在外部類之內(nèi),不允許同一個(gè)包中的其他類訪問該類。 內(nèi)部類成員可以直接訪問外部類的私有數(shù)據(jù),因?yàn)閮?nèi)部類被當(dāng)成其外部類成員,同一個(gè)類的成員之間可以互相訪問,但外部類不能訪問內(nèi)部類的實(shí)現(xiàn)細(xì)節(jié)。 匿名內(nèi)部類適合用于創(chuàng)建那些僅需要使用一次的類。 定義內(nèi)部類與外部類的語法大致相同,內(nèi)部類除需要定義在其他類里面之外,還有兩點(diǎn)區(qū)別: 內(nèi)...
摘要:可以將一個(gè)類的定義放在另一個(gè)類的定義內(nèi)部,這就是內(nèi)部類。實(shí)際上,它標(biāo)記的是表達(dá)式的結(jié)束,只不過這個(gè)表達(dá)式正巧包含了匿名內(nèi)部類罷了。如果內(nèi)部類是嵌套在別的內(nèi)部類之中,只需直接將它們的名字加在其外圍類標(biāo)識符與的后面 可以將一個(gè)類的定義放在另一個(gè)類的定義內(nèi)部,這就是內(nèi)部類。 內(nèi)部類允許你把一些邏輯相關(guān)的類組織在一起,并控制位于內(nèi)部的類的可視性. 1.創(chuàng)建內(nèi)部類 創(chuàng)建:把類的定義置于外圍類的...
摘要:即使抽象類里不包含抽象方法,這個(gè)抽象類也不能創(chuàng)建實(shí)例抽象類可以包含成員變量方法普通方法和抽象方法構(gòu)造器初始化塊內(nèi)部類接口枚舉種成分。 抽象類 當(dāng)編寫一個(gè)類時(shí),常常會為該類定義一些方法,這些方法用以描述該類的行為方式,那么這些方法都有具體的方法體。但在某些情況下,某個(gè)父類只是知道其子類應(yīng)該包含怎樣的方法,但無法準(zhǔn)確地知道這些子類如何實(shí)現(xiàn)這些方法。使用抽象方法即可滿足該要求:抽象方法是只有...
閱讀 2225·2019-08-30 15:53
閱讀 2454·2019-08-30 12:54
閱讀 1205·2019-08-29 16:09
閱讀 730·2019-08-29 12:14
閱讀 757·2019-08-26 10:33
閱讀 2483·2019-08-23 18:36
閱讀 2960·2019-08-23 18:30
閱讀 2121·2019-08-22 17:09