内部类和枚举类

内部类

概念:将一个类A定义在类B里面,里面的那个类A就称为内部类(innerclass),类b称为外部类(outerclass)
使用原因:在类A内部,还有一个部分需要一个完整的结构b进行描述,而这个内部的类B又只为外部事物A提供服务,不在其他地方单独使用,那么整个内部的完整结构B最好使用内部类。
总的来说,遵循高内聚,低耦合的面向的对象开发原则
举例:Tread类内部声明了state类,表示线程的生命周期

public class OuterClassTest {
    public static void main(String args[]){
        //1.创建Person的静态成员内部类的实例
        Person1.Dog dog = new Person1.Dog();
        dog.eat();
        //2.创建Person 非静态成员内部类的实例
        Person1 p1 = new Person1();
        Person1.Bird bird = p1.new Bird();
        bird.show1();
    }
}

class Person1{//外部类

    public void eat(){
        System.out.println("人吃饭");
    }

    //静态成员内部类
    static class Dog{
        public void eat(){
            System.out.println("狗吃骨头");
        }
    }
    //成员内部类
    class Bird{
        public void eat(){
            System.out.println("鸟吃虫子");
        }


        public void show1(){
            eat();
            this.eat();
            Person1.this.eat();
        }
    }

}

枚举类

理解: 本质上也是一种类,不过类的对象是有限的、固定的几个,不能让用户随意创建
私有化构造器,然后把对象在类里面创建好。

//枚举类
package enumtest;

public enum Status {

        BUSY,FREE,VOCATION,DISMISSON;//常量

        String name;
        int index;

        Status(String name, int index){
                this.name = name;
                this.index = index;
        }

        Status() {

        }

        public String getName(){
                return  name;
        }

        public void setName(String name){
                this.name = name;
        }

        public int getIndex(){
                return index;
        }

        public void setIndex(int index){
                this.index = index;
        }
}

//empolyee类
package enumtest;

public class Employee {
    private int age;
    private String name;
    private Status status;


    public void Employee(){};

    public Employee(String name, int age, Status status){
        this.age = age ;
        this.name = name;
        this.status = status;
    }
    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }

    public  int getAge(){
        return age;
    }

    public void setAge(int age){
        this.age = age;
    }

    public Status getStatus(){
        return status;
    }

    public void setStatus(Status status){
        this.status = status;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "name = " + name + '\'' +
                ", age = " + age +
                ", status = " + status +
                '}';
    }
}
//主文件
package enumtest;

public class EmployeeTest {
    public static void main(String[] args) {
        Employee e1 = new Employee("Tom",21,Status.BUSY);
        System.out.println(e1);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值