黑马程序员——基础知识总结_内部类
2015-06-15 11:45
351 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
[b]内部类与生活的联系:[/b]
一个人的心脏与个体是紧密联系的,心脏的跳动向身体的各个地方输血,使得个体具有生命力。心脏访问,改变了个体的属性,个体也可以通过运动来改变和访问心脏的属性(呼吸使得心脏跳动可以持续跳动)。而心脏最为个体的内在事物而存在,于是为了更好的描述这种事物,java引入了内部类。
[b]内部类访问规则:[/b]
1.内部类可以直接访问外部类的成员,包括私有。
2.外部类访问内部类必须创建内部对象
[b]访问格式:[/b]
1.当内部类定义在其他外部类成员位置上,而且非私有,可以直接在外部其他类中直接建立内部类对象。(具体格式看代码1注释)
2.在成员位置上就可以被成员修饰符修饰。
—-如:private 将内部类封装
——-:static 内部类就具备静态特性
代码1:
结果图:
[b]匿名内部类的概述:[/b]
1.是内部类的简写。
2.格式:new 父类或者接口(){定义子类的内容}
3.匿名内部类就是一个匿名子类对象,而且是带内容的子类对象。
4.匿名内部类中定义的方法最好不要超过3个。因为内部类达不到简化没有出现的意义就没那么明显了。
注意:创建匿名内部类时不要创建父类没有的方法,否则编译报错,除非有处理。
[b]匿名内部类的运用:[/b]
结果图:
[b]小结:[/b]
内部类的出现使得java具有更强的描述对象的能力。
匿名内部类经常运用在多态出现的场合,这个可以使得程序可以拥有更大的扩展性。对于内部类的研究有利于我们更深入了解面向对象
[b]内部类与生活的联系:[/b]
一个人的心脏与个体是紧密联系的,心脏的跳动向身体的各个地方输血,使得个体具有生命力。心脏访问,改变了个体的属性,个体也可以通过运动来改变和访问心脏的属性(呼吸使得心脏跳动可以持续跳动)。而心脏最为个体的内在事物而存在,于是为了更好的描述这种事物,java引入了内部类。
第一话:内部类的特点
[b]内部类访问规则:[/b]
1.内部类可以直接访问外部类的成员,包括私有。
2.外部类访问内部类必须创建内部对象
[b]访问格式:[/b]
1.当内部类定义在其他外部类成员位置上,而且非私有,可以直接在外部其他类中直接建立内部类对象。(具体格式看代码1注释)
2.在成员位置上就可以被成员修饰符修饰。
—-如:private 将内部类封装
——-:static 内部类就具备静态特性
代码1:
//外部类 class Outer { private int a = 3; //若内部类要访问静态成员b则要将内部类 private static int b = 3; //内部类 class Inner { int a = 1; public void getOuter() { int a = 2; //System.out.println(b);//报错要将内部类弄成静态的 //访问getOuter()方法的内部的局部变量 System.out.println("getOuter局部变量a="+a); //访问内部类Inner的成员变量this.a System.out.println("Inner成员变量a="+this.a); //访问外部类Outer的成员变量Outer.this.a System.out.println("Outer成员私有变量a="+Outer.this.a); } } public void buildInner() { //创建内部类并调用内部类的方法成员 new Inner().getOuter(); } } //外部其他类InnerDemo class InnerDemo { public static void main(String args) { //通过外部类的成员方法来创建内部类 new Outer().buildeInner(); //通过其他外部类来直接创建内部类并调用内部类成员方法 Outer.Inner in = new Outer().new Inner(); in.getOuter(); } }
结果图:
第二话:匿名内部类
[b]匿名内部类的概述:[/b]
1.是内部类的简写。
2.格式:new 父类或者接口(){定义子类的内容}
3.匿名内部类就是一个匿名子类对象,而且是带内容的子类对象。
4.匿名内部类中定义的方法最好不要超过3个。因为内部类达不到简化没有出现的意义就没那么明显了。
注意:创建匿名内部类时不要创建父类没有的方法,否则编译报错,除非有处理。
[b]匿名内部类的运用:[/b]
//定义接口 interface INTER { //虚拟机自动转化为public abstract void method() void method(); } class Test { static INTER function() { //通过匿名内部类 new INTER(){复写父类method方法} //创建匿名内部类 return new INTER() { public void method() { System.out.println("method..1"); } public void method2() {} }; //若出现匿名子类调用父类没有的方法则报错 /*return new INTER() { public void method() { System.out.println("method..1"); } public void method2() {} }.method2(); */ } } class InnerClassTest { public static void main(String[] args) { Test.function().method();// }
结果图:
[b]小结:[/b]
内部类的出现使得java具有更强的描述对象的能力。
匿名内部类经常运用在多态出现的场合,这个可以使得程序可以拥有更大的扩展性。对于内部类的研究有利于我们更深入了解面向对象
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统