内部类

就是类里面的类

 

 

 

 使用内部类

public class neibu {
    public static void main(String[] args) {

        /**
         *如何实例化成员内部类
         */

        //创建实例(静态德成员内部类)
        Person.gou go =new Person.gou();
        go.chi();
        //非静态的加载的晚,所以要先把类实例
        Person p =new Person();
        Person.niao nia = p.new niao();
        nia.changge();

        /**
         *如何在成员内部类中区别调用外部类的结构
         */
        nia.display("马鸟");


    }
}

class Person{
    String name ="小红";
    int age;
    public void eat(){
        System.out.println("人");
    }
    //静态成员内部类
    //静态的加载时间比非静态早,所以无法调用非静态
   static class gou{
            String name;

            public void chi(){
                System.out.println("吃骨头");

            }
    }
    class niao{//非静态内部类
            String name ="麻雀";
                public niao(){

                }
            public void changge(){
                System.out.println("我是一只小小鸟");
                    Person.this.eat();//调用外部类的非静态属性
            }
            public void display(String name){
                    System.out.println(name);
                    System.out.println(this.name);
                    System.out.println(Person.this.name);
            }
    }

    public void method(){
        //局部内部嘞
        class AA{

        }
    }
    {//代码块,局部内部类
        class BB{

        }
    }
    public Person(){//构造器,局部内部类
        class CC{

        }
    }
}

局部内部类的使用:见《InnerClassTest.java

public class InnerClassText {
    //局部内部类的使用:见《InnerClassTest.java》
    public static void main(String[] args) {

    }
    public void method() {
        //局部内部嘞
        class AA {

        }
    }
    //返回一个实现了Comparable接口的对象
    public Comparable getComparable(){

        //创建一个实现了Comparable接口的类:局部内部类
                //方法一
//        class MyComparable implements Comparable{
//
//            @Override
//            public int compareTo(Object o) {
//                return 0;
//            }
//        }
//        return new MyComparable();
//
        //方法二
        return new Comparable() {
            @Override
            public int compareTo(Object o) {
                return 0;
            }
        };
    }
}

 

 

 

posted @ 2021-03-11 21:58  谷先生  阅读(55)  评论(0)    收藏  举报