【Java基础】--06.java内部类与枚举类

一、内部类:

在一个类中声明另一个类。 里面的类:内部类 外面的类:外部类

1. 成员内部类:

①是类的成员之一。 (属性、方法、构造器、代码块)
②内部类可以使用四种访问控制修饰符(public protected default private)
③static final

    //创建静态内部类对象
            Person.Mobile pm = new Person.Mobile();       
            pm.message();

            //创建非静态内部类对象
            //Person p = new Person();
            //Person.Computer pc = p.new Computer();

            Person.Computer pc = new Person().new Computer();
            pc.show();

④内部类的外部类拥有相同的特性。

   class Person{
            Stirng name;
            int age;

            //成员内部类
            public class Computer{
                String name;           

                public void show(){
                    System.out.println(this.name);       
                    System.out.println(Person.this.name);//区分内部类属性和外部类属性   
                }
            }   

            static class Mobile{
                public void message(){

                }
            }   
        }

2. 局部内部类:

    //如下方式使用非常少
    public void show(){
        class InnerClass{}
    }


    //若某个类仅适用于当前方法时,可以声明为局部内部类
    public Comparator getComparator(){

        class MyComparator implements Comparator{
            public int compare(Object o1, Object o2){
                return 0;
            }           
        }       

        return new MyComparator();
    }   

    public Comparator getComparotor(){
        //匿名内部类
        Comparator com = new Comparator(){
            public int compare(Object o1, Object o2){
                return 0;
            }
        };

        return com;
    }   


    pulbic Comparator getComparator(){
        return new Comparator(){
            public int compare(Object o1, Object o2){
                return 0;
            }
        };
    }           

二、枚举类:

jdk1.5后出的新特性,可以定义有限数量的可穷举数据集。
简而言之,当确定一个类有几个对象时,使用枚举。

1. 自定义枚举类

①私有化构造器
②类内部创建对象

class Season{

    //类内部创建对象
    public static final Season SPRING = new Season();
    public static final Season SUMMER = new Season();   
    public static final Season AUTUMN = new Season();   
    public static final Season WINTER = new Season();   

    //私有化构造器
    private Season(){}

}

2. 使用 enum 关键字创建枚举类

enum Season{
    SPRING,
    SUMMER,   
    AUTUMN,   
    WINTER;
}

枚举类常用方法:

valueOf(String name) : 根据name枚举类对象名称,获取指定的枚举类对象
values() : 获取当前枚举类中所有枚举类对象的数组

3. 枚举类实现接口

public enum Season implements MyInterface{
    SPRING{
        public void show(){
            System.out.println("春天");
        }
    },
    SUMMER{
        public void show(){
            System.out.println("夏天");
        }
    },
    AUTUMN{
        public void show(){
            System.out.println("秋天");
        }
    },
    WINTER{
        public void show(){
            System.out.println("冬天");
        }
    };

//    @Override
//    public void show() {
//        System.out.println("季节");
//    }
}

你可能感兴趣的:(-----C#学习,java基础)