内部类(六)---嵌套类

  • 如果不需要内部类与其外围类对象之间有联系,可以将内部类声明为static。通常称为嵌套类。
  • 普通的内部类对象隐式地保存了一个引用,指向创建它的外围类对象。
  • 嵌套类意味着:①要创建嵌套类的对象,并不需要其外围类的对象。②不能从嵌套类的对象中访问非静态的外围类对象。
  • 嵌套类和外围类还有一个区别:普通内部类的字段与方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段,也不能包含嵌套类,但是嵌套类可以包含所有这些东西。
/**
 * Created by Panda on 2018/6/10.
 */
public class Parcel11 {
    private static class ParcelContents implements Contents{
        private int i=11;
        @Override
        public int value() {
            return i;
        }
    }
    protected static class ParcelDestination implements Destination{
        private String label;
        private ParcelDestination(String whereTo){
            label=whereTo;
        }
        @Override
        public String readLabel() {
            return label;
        }
        public static void f(){}
        static int x=10;
        static class AnotherLevel{
            public static void f(){}
            static int x=10;
        }
    }
    //在普通的内部类中,通过一个特殊的this引用可以链接到其外围类对象,。
    //嵌套类就没有这个特殊的this引用,这使得它类似于一个static方法。
    public static Destination destination(String s){
        return new ParcelDestination(s);
    }
    public static Contents contents(){
        return new ParcelContents();
    }

    public static void main(String[] args) {
        Contents contents=contents();
        Destination destination=destination("milk");
    }
}

接口内部的类

  • 很多情况下,不能在接口内部放置任何代码,但是嵌套类可以作为接口的一部分。接口中的任何类都自动地是public和static的。因为类是static,只是将嵌套类置于接口的命名空间内,并不违反接口的规则。甚至可以在内部类中实现其外围接口。
    这里写图片描述
    如果想要创建某些公共代码,使得它们可以被某个接口的所有不同实现所共用,就使用接口内部的嵌套类会显得很方便。

从多层嵌套类中访问外部类的成员

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值