摘要:本地類和匿名類一樣,直接聲明在代碼塊里面,可以是主方法,循環里等等地方姓名血量護甲移動速度與匿名類的區別在于,本地類有了自定義的類名新的進攻手段地卜師
內部類
內部類分為四種:
非靜態內部類
靜態內部類
匿名類
本地類
非靜態內部類調用方法: new 外部類().new 內部類()
package charactor; public class Hero { private String name; // 姓名 float hp; // 血量 float armor; // 護甲 int moveSpeed; // 移動速度 // 非靜態內部類,只有一個外部類對象存在的時候,才有意義 // 戰斗成績只有在一個英雄對象存在的時候才有意義 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 = "蓋倫"; // 實例化內部類 // BattleScore對象只有在一個英雄對象存在的時候才有意義 // 所以其實例化必須建立在一個外部類對象的基礎之上 BattleScore score = garen.new BattleScore(); score.kill = 9; score.legendary(); } }靜態內部類
調用方法: new 外部類.靜態內部類();
因為沒有一個外部類的實例,所以在靜態內部類里面不可以訪問外部類的實例屬性和方法
除了可以訪問外部類的私有靜態成員外,靜態內部類和普通類沒什么大的區別。
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(); // 靜態內部類不能直接訪問外部類的對象屬性 System.out.println(name + " win this game"); } } } public static void main(String[] args) { // 實例化靜態內部類 Hero.EnemyCrystal crystal = new Hero.EnemyCrystal(); crystal.checkIfVictory(); } }匿名類
package charactor; public abstract class Hero { String name; // 姓名 float hp; // 血量 float armor; // 護甲 int moveSpeed; // 移動速度 public abstract void attack(); public static void main(String[] args) { ADHero adh = new ADHero(); // 通過打印adh,可以看到adh這個對象屬于ADHero類 adh.attack(); System.out.println(adh); Hero h = new Hero() { // 當場實現attack方法 public void attack() { System.out.println("新的進攻手段"); } }; h.attack(); // 通過打印h,可以看到h這個對象屬于Hero$1這么一個系統自動分配的類名 System.out.println(h); } }本地類
本地類可以理解為有名字的匿名類
與內部類不一樣的是,內部類必須聲明在成員的位置,即與屬性和方法平等的位置。
本地類和匿名類一樣,直接聲明在代碼塊里面,可以是主方法,for循環里等等地方
package charactor; public abstract class Hero { String name; // 姓名 float hp; // 血量 float armor; // 護甲 int moveSpeed; // 移動速度 public abstract void attack(); public static void main(String[] args) { // 與匿名類的區別在于,本地類有了自定義的類名 class SomeHero extends Hero { public void attack() { System.out.println(name + " 新的進攻手段"); } } SomeHero h = new SomeHero(); h.name = "地卜師"; h.attack(); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68872.html
摘要:方法內部類就是局部內部類,一般定義在類的局部位置,它可以訪問當前代碼塊及外部類的所有變量。 今天溫習一下 Java 中的內部類,內部類一般有如下幾種:靜態內部類、成員內部類、匿名內部類和方法內部類,下文中將主要介紹靜態內部類和成員內部類,主要內容如下: 概述 靜態內部類 成員內部類 匿名內部類和方法內部類 總結 概述 顧名思義內部類就是在一個類內部定義的類,它是內部類是一個獨立的類...
內部類 內部類主要作用 內部類提供了更好的封裝,可以吧內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類。 內部類成員可以直接訪問外部類的私有數據,因為內部類被當成其外部類成員,同一個類的成員之間可以互相訪問,但外部類不能訪問內部類的實現細節。 匿名內部類適合用于創建那些僅需要使用一次的類。 定義內部類與外部類的語法大致相同,內部類除需要定義在其他類里面之外,還有兩點區別: 內...
摘要:可以將一個類的定義放在另一個類的定義內部,這就是內部類。實際上,它標記的是表達式的結束,只不過這個表達式正巧包含了匿名內部類罷了。如果內部類是嵌套在別的內部類之中,只需直接將它們的名字加在其外圍類標識符與的后面 可以將一個類的定義放在另一個類的定義內部,這就是內部類。 內部類允許你把一些邏輯相關的類組織在一起,并控制位于內部的類的可視性. 1.創建內部類 創建:把類的定義置于外圍類的...
摘要:即使抽象類里不包含抽象方法,這個抽象類也不能創建實例抽象類可以包含成員變量方法普通方法和抽象方法構造器初始化塊內部類接口枚舉種成分。 抽象類 當編寫一個類時,常常會為該類定義一些方法,這些方法用以描述該類的行為方式,那么這些方法都有具體的方法體。但在某些情況下,某個父類只是知道其子類應該包含怎樣的方法,但無法準確地知道這些子類如何實現這些方法。使用抽象方法即可滿足該要求:抽象方法是只有...
閱讀 2219·2019-08-30 15:53
閱讀 2444·2019-08-30 12:54
閱讀 1187·2019-08-29 16:09
閱讀 718·2019-08-29 12:14
閱讀 746·2019-08-26 10:33
閱讀 2461·2019-08-23 18:36
閱讀 2950·2019-08-23 18:30
閱讀 2111·2019-08-22 17:09