class 人{

    int 心脏;
    肝脏
    脾脏
    胃
    肾脏
    肺
    大肠
    小肠
}
汽车{
    String 发动机
}

内部类
    在一个类中定义一个类。比如在A类中定义B类，B类就是内部类。
  格式：
    class 外部类名{
        修饰符 class 内部类名{

        }
    }

内部类的特点：
    1、内部类可以直接访问外部类的成员，包括私有的private修饰的。
    2、外部类要访问内部类的成员，就必须要创建对象。

创建内部类对象的格式：
    //创建内部类的对象
    // 外部类.内部类 内部类对象名=new 外部类().new 内部类();
    Car.Engine ce=new Car().new Engine();

在一个类中设计内部类的目的，大部分都是不行让外界访问，而是只想自己使用。
所以一般内部类都应该是私有化的，私有化之后，再提供一个可以让外界访问的
方法。方法内部创建内部类的对象并且调用。

内部类的划分：
    1、成员内部类，建立在类中，方法外。和类的成员处于同一级别。
        |-普通的成员内部类
        |-静态成员内部类
            访问格式：外部类名.内部类名 对象名=new 外部类名.内部类名();

    2、局部内部类，建立在类中的方法中，属于方法的局部变量级别。
        局部内部类，外界是无法直接访问的，需要在方法的内部类创建对象并使用。
        局部内部类可以直接访问外部类的成员，也可以访问方法内的局部变量。
        //局部内部类，建立在方法中
        public void method() {  //外部类的方法
            class Inner {   //方法内的内部类--局部内部类
                public void show() {    //内部类中的方法
                    System.out.println("内部类的方法...");
                }
            }
            //局部内部类在方法中定义完，就要在方法中使用，否则就没有使用的机会了。
            Inner inner=new Inner();
            inner.show();
        }
    3、匿名内部类
    匿名内部类的前提，先存在一个类或接口，这个类可以是具体类，也可以是抽象类
    匿名内部类的格式：
        new 类名(){
            重写方法
        }
      比如：
        //创建类的对象，后面增加大括号，大括号内部重写类的方法。
        UserDao userDao=new UserDao() {
            @Override
            public void addUser() {

            }
        };
    匿名内部类的本质：
        其实是一个继承了该类或实现了该接口的子类(实现类)的匿名对象。
        就是创建一个父类(接口)的一次性的子类(实现类)，并且立刻创建这个子类或实现类的对象。
        就又变成了父类的引用，指向子类的对象---多态。

    匿名内部类在开发中的使用：
        当我们发现了某个方法需要一个接口(抽象类)的子类对象，那么我们就可以传递进去一个匿名内部类，
        简化传统的创建接口或抽象类的子类，然后再创建对象的过程。
