10、内部类

  • 可以将一个类的定义放在另一个类的定义内部,这就是内部类

一、创建内部类
外部类将有一个方法,该方法返回一个指向内部类的引用。

public class Parcel2 {
    class Contents{
        private int i = 11;
        public int value(){
            return i;
        }
    }
    
    class Destination{
        private String label;
        public Destination(String whereTo) {
            label = whereTo;
        }
        String readLabel(){
            return label;
        }
    }
    public Destination to(String s){  //返回内部类的引用
        return new Destination(s);
    }
    public Contents contents(){   //返回内部类的引用
        return new Contents();
    }
    
    public void ship(String dest){
        Contents c = new Contents();
        Destination d = new Destination(dest);
        System.out.println(d.readLabel());
    }
    
    public static void main(String[] args) {
        Parcel2 p = new Parcel2();
        p.ship("Tasmaina");
        Parcel2 q = new Parcel2();
        Parcel2.Contents c = q.contents();  //创建内部类对象
        Parcel2.Destination d = q.to("Borneo");
    }
}

二、链接到外部类

  • 内部类对象能够访问外围对象的所有成员。内部类拥有外围类所有元素的访问权。

三、使用 .this 和 .new
对外部类对象的引用: 外部类名.this
创建某个内部类对象: 外部类对象.new 内部类构造器

  • 当想直接创建内部类对象时,不能直接创建,而是必须使用外部类对象来创建内部类对象

四、内部类与向上转型

  • 内部类继承自接口,

五、在方法和作用域内的内部类
+1、在方法的作用域内创建一个完整的类,这被成为局部内部类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性。 如果想从外部类...
    Lemon_Home阅读 229评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,253评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • 早盘,两市震荡上行,再创近期反弹新高。盘面上,金融股继续分化,证券板块一度拉升下冲高回落,而创业板趁机反弹,短线有...
    达叔品股阅读 73评论 0 1
  • 晚宴旁边坐着一对母女, 母亲说 吃饭要七分饱 吃多了对身体无益 一种饱和的胃酸从我的大脑中慢慢外溢 母亲说要慢慢咀...
    晏萍阅读 543评论 44 43