A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Yoyoqiu 中级黑马   /  2016-4-28 21:17  /  494 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

明天学内部类  
今天预习感觉好难啊  有没有大神能来解释一下
为什么要有内部类
它的好处是什么
怎么使用
什么情况下使用
有什么要注意的地方

能回答一个问题也行
感谢感谢

5 个回复

倒序浏览
public class TestInnerClass {
        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);
        }
}
回复 使用道具 举报
知道匿名内部类行了      说是匿名内部类其实就是匿名子类对象   对后面的传参很方便   
回复 使用道具 举报
匿名内部类主要是传参方便
回复 使用道具 举报
主要是匿名内部类,老毕说以后图形化界面时经常用到
回复 使用道具 举报
会写匿名内部类就行了,先学会,慢慢就知道为什么了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马