成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

內(nèi)部類

Paul_King / 2887人閱讀

摘要:本地類和匿名類一樣,直接聲明在代碼塊里面,可以是主方法,循環(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

相關(guān)文章

  • java內(nèi)部總結(jié)

    摘要:每個(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)部類則可以訪問外部類的所有...

    xiaodao 評論0 收藏0
  • Java系列之內(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ú)立的類...

    crelaber 評論0 收藏0
  • java面向?qū)ο?下)

    內(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)...

    awesome23 評論0 收藏0
  • Java 內(nèi)部(10)

    摘要:可以將一個(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)建:把類的定義置于外圍類的...

    andong777 評論0 收藏0
  • Java 抽象、接口、內(nèi)部

    摘要:即使抽象類里不包含抽象方法,這個(gè)抽象類也不能創(chuàng)建實(shí)例抽象類可以包含成員變量方法普通方法和抽象方法構(gòu)造器初始化塊內(nèi)部類接口枚舉種成分。 抽象類 當(dāng)編寫一個(gè)類時(shí),常常會為該類定義一些方法,這些方法用以描述該類的行為方式,那么這些方法都有具體的方法體。但在某些情況下,某個(gè)父類只是知道其子類應(yīng)該包含怎樣的方法,但無法準(zhǔn)確地知道這些子類如何實(shí)現(xiàn)這些方法。使用抽象方法即可滿足該要求:抽象方法是只有...

    miguel.jiang 評論0 收藏0

發(fā)表評論

0條評論

Paul_King

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<