第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Java基礎(chǔ)之內(nèi)部類2-向上轉(zhuǎn)型

標(biāo)簽:
Java

简言

如果看完基础部分部分同学依然会觉得,内部类不太常用,没什么用武之地。如果你没有这么想,我觉得你~~~有眼光

内部类其实是一个很棒的设计,在java源码中使用也挺广泛的。说到这,虽然有人没用过内部类,但是我想说,你基本上天天都在间接的用内部类

向上转型

废话不说,先上一段代码

// Animal.java
public interface Animal {
    String getPetName();
}

// People.java
public interface People {
    String getPeopleName();
}

// Host.java
public class Host {

    public People getFriend() {
        return new Friend();
    }

    public Animal getBird() {
        return new Bird();
    }

    private class Bird implements Animal {

        public String getPetName() {
            return "bird";
        }
    }

    protected class Friend implements People {

        public String getPeopleName() {
            return "people";
        }
    }
}

// Main.java
public class Main {
    public static void main(String[] args) {
        Host host = new Host();
        // Host.Bird bird = host.new Bird(); 编译出错
        Host.Friend friend = host.new Friend();

        System.out.println(host.getBird().getPetName());
        System.out.println(host.getFriend().getPeopleName());

        List<String> test = new ArrayList<String>();
    }
}

开发分析代码:

  • Animal和People都是接口,都包含一个接口方法
  • Host是一个外部类,里面有内部类Bird实现了Animal接口、Friend实现了People接口
  • Bird是一个私有内部类,其他类无法访问,Friend同包和子类可以访问
  • Host有两个public方法getBird()和getFriend()分别返回Animal和People,但是真正返回的是Bird和Friend
  • 在Main方法里面访问Host的getBird和getFriend两个方法时,对于getBird而言,外界完全不知道具体的实现细节是什么

这里正是通过内部类向上转型为接口,并使用private来修饰,这三者的组合可以给类设计者提供一个很好的途径来完全隐藏不想被修改的内容

内部类向上转型的典型案例

上面介绍的时候说过,对于一个java程序员,即使没有直接写内部类,但是基本上每天也会间接的用到内部类,看过源码的同学可能会秒懂。

在上面的例子中最后一行代码,新建了一个空列表,那不是忘记删了,是为了看源码。
ArrayList是java程序员基本上每天都会使用的数据结构,如果一天没用到这个,,,我想说你在认真工作吗???

在ArrayList里面的迭代器就是使用了私有内部类的实现方式,通过这种方式,完全屏蔽了迭代器的具体实现,也无法更改,下图即为迭代器的部分代码

怎么样,是不是感觉内部类大有用处,别急,内部类是很深奥的,上面的这只是内部类的基础功能。更深入的介绍可以访问【smxknife's Java内部类】提前了解

关于内部类的详细文章可以参考目录 [smxknife's Java内部类]

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消