Java 中内部类、静态内部类、枚举类

一、内部类
在另一个类中定义的类
内部类作用
1、内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。
2、内部类可以直接访问外部类的私有属性,内部类被当成其外部类成员。当外部类不能访问内部类的内部属性。
内部类的使用场合:由于内部类提供了更好地封装性,并且可以很方便的访问外部类的属性。所以,通常内部类只在所外部类提供服务的情况下优先使用。
内部类分类:成员内部类 匿名内部类 局部内部类(极少使用)
二、静态内部类
因为静态内部类只能操作静态成员属性,所以无论创建几次,虽然多个静态类实例不是同一个,但其操作的变量是共享的(1变为了2)。!

public class StudyStatic {

    private static int staticVar;
    private static InternalStaticClass innerClass = new InternalStaticClass();
    private static InternalStaticClass innerClass2 = new InternalStaticClass();

    public static void main(String[] args) {

        System.out.println(innerClass.hashCode());
        System.out.println(innerClass2.hashCode());
    }

    protected static class InternalStaticClass{

        public InternalStaticClass(){

            staticVar++;
            System.out.println(staticVar);
        }
    }
}

代码结果:

1
2
366712642
1829164700

三、枚举类
enum 枚举类型定义与类定义相似,enum类型本身就相当于类,不过比较特殊,相当于提供了几个个该类的实例,当然enum类型不能被实例化,但可以修改已经存在的枚举值。

public class TestEnum {

    public static void main(String[] args) {

        for(int i=0;i<MyEnum.values().length;i++){
            System.out.println(MyEnum.values()[i].getKey()+":"+
                    MyEnum.values()[i].getValue());
        }
        MyEnum.Enum1.setKey(4);
        System.out.println(MyEnum.Enum1.getKey()+":"+MyEnum.Enum1.getValue());
    }

    public enum MyEnum{

        //多个个枚举值,注意名字并不是构造方法名
        Enum1(1,"One"),Enum2(2,"Two"),Enum3(3,"Three");

        //枚举值所包含的属性
        private int key;
        private String value;

        //构造方法
        MyEnum(int key,String value){
            this.setKey(key);
            this.setValue(value);
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getValue() {
            return value;
        }
        public void setValue(String value) {
            this.value = value;
        }
    }
}

运行结果:

1:One
2:Two
3:Three
4:One
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值