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

© 徐朋威0716 中级黑马   /  2015-7-30 22:03  /  311 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

day10笔记
1、包:package
定义:包就是文件夹,用于区分相同的类名。
格式: package 包名;
                包名:全部小写,可以单级包,可以多级包

顺序问题:
        package 》》 import 》》 class
带包的类该如何编译运行:
        方式1:手动建包
                A:用javac编译生成.class文件
                B:手动建立文件夹
                C:把.class文件放到文件夹中
                D:仍在当前文件下运行.class文件
        方式2:自动建包
                javac -d . 文件名.java
       
2、不同包下类的使用:
        A:先建包
        B:访问不到的类定义为public
如果包名比较长,那么就出现了导包技术

3、四种修饰符的种类和使用:
        private:只能在本类中使用
        默认:不仅在本类中使用,还能在同一个包下使用
        protected:不仅在本类中使用,还能在同一个包下使用,还能被不同包下的子类使用
        public:最大权限,什么情况下都能使用

4、内部类概述:
        定义:将一个类定义在另一个类里面,里面那个类就是内部类。
        访问特点:
                内部类可以直接访问外部类的成员(包括私有成员)
                外部类可以通过创建内部类的对象来使用内部类的成员

        内部类的定义位置:
                A:成员位置:成员内部类
                B:局部位置:局部内部类
               
                4.1、成员内部类使用方式:
                        1.1.1 可以通过在成员变量位置上,创建成员内部类的对象使用该内部类的成员
                        1.1.2 可以通过外部类中的成员方法,在成员方法中创建该内部类的对象,来使用该内部类的成员
                       
                        1.2.1 如果在其他类中想直接使用非静态内部类的成员(此时这个内部类不是静态的,所调用的方法也不是静态的),请使用一下格式:
                                外部类名.内部类名 变量 = 外部类对象.内部类对象;
                       
                        1.2.2 如果在其他类中想直接使用静态成员内部类的成员(此时这个内部类是静态的),请使用一下格式:
                                外部类名.内部类名 变量 = new 外部类名.内部类名();



                成员内部类修饰符:
                        A:private 修饰符,出于安全考虑,常见用法。
                        B:static 为了方便,直接用类名调用(如果内部类中有静态的方法或者成员变量,那么这个时候内部类也一定要使用修饰符 static)
                                这个时候调用方法的格式就是:
                                        外部类名.内部类名 变量名 = new 外部类名.内部类名();
                                        变量名.成员方法或者成员变量;
               
                4.2、局部内部类:
                        定义:方法中定义的类。
                        结论:局部内部类访问局部变量,该变量必须被final修饰。
                        (面试问答)这个结论的原因:局部变量会在方法调用完毕后立马消失,而局部内部类还在使用着局部变量,当方法执行结束后,方法区中的内容还没有消失,也就是说这个变量还必须存在。所以,为了延长局部变量的生命周期,就加final修饰了。

内部类的命名规则:
        成员内部类:外部类$内部类.class
        局部内部类:外部类$1第一级内部类.class


匿名内部类:
        定义:没有名字的局部内部类。

前提:
        必须存在一个类,抽象类,或者接口
定义内部类的格式为:
        new 类名或者接口名()
        {
                重写类 或者 接口中的方法
                也可以自定义新的方法
        };
什么时候使用匿名内部类呢?
        一般来说在接口或者抽象类中的方法在3个一下的时候。考虑使用匿名内部类。
        以后当一个方法接收的形式参数是一个抽象类或者 接口时,考虑使用。
匿名内部类:是一个继承了类或者实现接口了的匿名的子类对象。

注意:所有父类或者父接口出现的地方完全可以使用子类对象替代。










2 个回复

倒序浏览
楼主好人,长知识了
回复 使用道具 举报
总结的挺 详细啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马