黑马程序员技术交流社区

标题: 内部类程序解析 [打印本页]

作者: 320215787    时间: 2016-4-27 18:28
标题: 内部类程序解析
public class test1 {
        public static void main(String[] args) {       
                // 1.成员变量
                Person p = new Person();
                // System.out.println(p.num);
                // 成员内部类对象的创建格式
                Person.Xin x = new Person().new Xin();
                // 2.调用成员内部类对象的成员方法methodA
                x.methodA();
                // 私有的内部类对象的使用,先建立外部类对象,然后调用外部类对象的成员方法(创建了一私有内部类对象,并调用其方法)
                p.method();
                // 3.静态内部类的使用
                System.out.println(Person.num2);
                // Person.Shen s = Person.new Shen();
                Person.Shen s = new Person.Shen();
                s.methodC();
                // 调用静态内部类中的静态方法
                Person.Shen.methodD();
                // 调用成员方法methodE
                p.methodE();
               
        }
}

class Person {
        public int num = 20;// 成员变量 num = 20
        private int num1 = 40;
        public static int num2 = 30;

        // 1.成员内部类,作为外部类的成员,可以直接访问外部类的属性,包括私有
        class Xin {
                private int num = 30;
                public void methodA() {
                        int num = 50;
                        System.out.println("扑通扑通的跳......" + num);
                        System.out.println("扑通扑通的跳......" + this.num);
                        // 访问外部类的成员
                        System.out.println("扑通扑通的跳......" + Person.this.num);
                }
        }

        // 2.内部类既然作为外部类的成员,就可以用成员修饰符private
        // private修饰之后说明只能在本类(Person)中使用
        // 可以在Person类中建立一个成员方法,该成员方法中建立一个私有的内部类对象
        private class Gan {
                public void methodB() {
                        System.out.println("排毒中....");
                }
        }

        // 私有内部类,在外部无法直接使用,所以在外部类的成员方法中创建私有内部类对象,再直接调用该对象的方法
        public void method() {
                Gan g = new Gan();
                g.methodB();
        }

        // 3.内部类既然作为外部类的成员,就可以用成员修饰符static
        static class Shen {
                public void methodC() {
                        System.out.println("少敲点代码,我太辛苦了...,再继续的话,我的第一反应就是掉头发....");
                }

                public static void methodD() {
                        System.out.println("少敲点代码,我太辛苦了...,再继续的话..就会失眠.....");
                }
        }

        // 4.局部内部类(在方法内部定义的类叫局部内部类)
        public void methodE() {
                class Fei {
                        public void methodF() {
                                System.out.println("别再抽烟了,受不鸟你了.....");
                        }
                }
                // 局部内部类的使用:在哪个方法里定义的局部内部类,就直接在该方法中创建对象,并调用方法
                Fei f = new Fei();
                f.methodF();
                //System.out.println(f);
        }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2