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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 掉了一地.. 中级黑马   /  2015-2-17 09:18  /  930 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

内部类      体现
        1,当A类中的内容要被B类直接访问时。而A类还需要创建B类的对象,访问b的内容时,这时,可以将B类定义到A类的内部,这样访问更为便捷。
此时b称为内部类(内置类);
        2,内部类必须有自己所属的名字,没有的话标识不了内部类。

访问方式:内部类可以直接访问外部类中的所有成员,包含私有的。而外部类要想要访问内部类的成员必须创建内部类的对象。

当我们在描述事物时,事物的内部还有事物,这个内部的事物还在访问外部事物中的内容。这时就将这个事物通过内部类来描述。

内部类被访问的方式:
        1,内部类在成员位置上的被访问方式:
                成员是可以被指定的修饰符所修饰的。public修饰内部类内部类不加载内存,static修饰的内部类随着外部类的加载而加载。非静态内部类中不允许定义静态成员,仅允许在静态内部类中定义  静态常量 static  final。
        2,内部类访问外部类,通过这样引用:外部类.this,对于静态内部类就不持有  外部类.this, 而是直接使用  外部类名;
        3,局部内部类:定义在类的方法中。并且内部类定义在局部时,只能访问被final修饰的局部变量。未被修饰的局部变量生命周期太短了。

内部类的继承或者实现:看APi文档,发现类名或者接口名称中有.,说明是内部类,或者是内部接口。内部类是可以继承或者延伸其他的类或者接口的。

内部类对外提供访问方式:
好处:可以通过内部类的方式对类进行继承重写,或者接口进行实现。
通过公共的方式对其内部类对象进行访问,因为通常内部类很有可能被外部类封装其中。我们就可以通过父类或者接口的方式访问到内部类对象。
        如果内部类对外提供访问方式,可以如此获取:外部类.内部类  内部类 = 外部类.getObject();
        如果内部类被私有,则可以通过父类型获取。访问方式:父类 a = 外部类.getObject();

匿名内部类:不想创建具体的子类,还想创建父类的子类对象。其实就是创建一个在类中带有内容的子类对象。格式 new 父类or接口(){重写父类方法}
匿名内部类就是内部类的简化形式。
使用前提:内部类必须要继承父类或者实现接口。
实现:直接创建父类对象重写父类的方法。抽象类则可以重写抽象类中的方法。
new AbsDemo{        //absdemo的子类对象,带着内容的子类对象。
        //这种写法称呼,匿名内部类。
        {
                //重写absdemo中的抽象的show方法:
                void show(){
                        system.out.pr("num==="+num);
                }
        }
}.show();//对象调用方法。  

当静态方法访问内部类时,内部类必须是静态的。

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
内部类好复杂的说
回复 使用道具 举报
这是直接复制资料的节奏吗:o
回复 使用道具 举报
血色@残阳 发表于 2015-2-17 15:18
这是直接复制资料的节奏吗

都是我听课的笔记呀,,,算是复制老师的吧。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马