Java 内部类

内部类

内部类.png

内部类

定义:将一个类定义置入另一个类定义中
用处:利用它可对那些逻辑上相互联系的类进行分组,并可控制一个类在另一个类中的“可见性”

public class Parcel1 {

    class Contents {
        private int i = 11;
        public int value() { return i; }
    }

    class Destination {
        private String label;
        Destination(String whereTo) {
            label = whereTo;
        }
        String readLabel() { return label; }
    }

    // Using inner classes looks just like
    // using any other class, within Parcel1:

    public void ship(String dest) {
        Contents c = new Contents();
        System.out.println(c.value());
        Destination d = new Destination(dest);
        System.out.println(d.readLabel());
    }

    public static void main(String[] args) {
        Parcel1 p = new Parcel1();
        p.ship("Tasmania");
    }

}

利用private内部类,类设计人 员可完全禁止其他人依赖类型编码,并可将具体的实施细节完全隐藏起来。

从客户程序员的角度 来看,一个接口的范围没有意义的,因为他们不能访问不属于公共接口类的任何额外方法

普通(非内部)类不可设为private或protected——只允许public或者default。

内部类可以访问封装类的成员,这是如何实现的呢?

内部类必须拥有对封装类的特定对象的一个引用,而封装类的作用就是创建这个内部类。随后,当我们引用封装类的一个成员时,就利用那个(隐藏)的引用来选择那个成员。幸运的是,编译器会帮助我们实现所有这些细节。但我们现在也可以理解内部类的一个对象只能与封装类的一个对象联合创建。在这个创建过程中,要求对封装类对象的引用进行初始化。若不能访问那个引用,编译器就会报错。进行所有这些操作的时候大多数时候都不要求程序员的任何介入。

静态内部类

static 内部类意味着:
(1) 为创建一个static内部类的对象,我们不需要一个外部类对象。
(2) 不能从static内部类的一个对象中访问一个外部类对象。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java 内部类 分四种:成员内部类、局部内部类、静态内部类和匿名内部类。 1、成员内部类: 即作为外部类的一个成...
    ikaroskun阅读 5,046评论 0 13
  • 问:Java 常见的内部类有哪几种,简单说说其特征? 答:静态内部类、成员内部类、方法内部类(局部内部类)、匿名内...
    Little丶Jerry阅读 6,394评论 0 1
  • 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有...
    Java架构师Carl阅读 3,203评论 0 3
  • 天涯诗雨染流年诗词征集 招贤纳才聚诗坊 共议宗旨明方向 阳光诗苑沐朝晖 华夏文明蕴诗香 天涯诗坊· 赞 招贤纳才聚...
    破天船长阅读 3,688评论 0 0
  • 我的夜晚早该沉睡 睡在月梢 睡在星桥 睡在古道 睡在欢笑 是谁让我有睡无眠 是那烈日花季 是那分手别离 还是那只身...
    蛰伏的爱lby阅读 1,535评论 0 0

友情链接更多精彩内容