简述java中的内部类及其用法
来源:互联网 发布:森近霖之助淘宝 编辑:程序博客网 时间:2024/05/29 16:46
一、内部类的定义:在Java中,允许在一个类的内部定义类,这样的类称作内部类也叫做嵌套类,这个内部类所在的类称作外部类。
二、内部类的创建:
语法:
外部类名.内部类名 变量名=new 外部类名().new 内部类名();
举例:
假设A是外部类,B是内部类
A.B b=new A().new B();
三、建立内部类对象时应注意:
1.在外部类的内部可以直接使用inner s=newinner();(因为外部类知道inner是哪个类,所以可以生成对象。)
2.在外部类的外部,要生成(new)一个内部类对象,需要首先建立一个外部类对象(外部类可用),然后在生成一个内部类对象。
四、内部类的表现形式:
1.静态内部类
2.成员内部类
3.方法内部类
4.匿名内部类
五、内部类的共性:
1.内部类任然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。
2.内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。
六、内部类的优点:
1.内部类成员可以直接访问外部类的成员(包括私有成员)。
2.比类具有更好的封装性
七、匿名内部类(Anonymous Inner Class)
1.匿名内部类的定义:没有名字的内部类,表面上看起来那是它的名字,实际上不是它的名字。
2.使用匿名内部类的前提:必须继承父类或者实现一个接口。
3.匿名内部类的分类:a.继承式的匿名内部类
b.接口式的匿名内部类
c.参数式的匿名内部类
4.特点:匿名内部类一定是跟在new的后面,用其隐含实现一个接口或一个类,没有类名,根据多态,我们使用其父类名。因为匿名内部类属于局部类,所以局部类的所有限制对其生效。匿名内部类是唯一一种无构造方法的类。匿名内部类在编译时,系统自动起名Out$1.class。如果一个对象编译时的类型是接口,那么其运行的类型为实现这个接口的类。
5.注意点:
1.不能有构造方法
2.不能有任何静态成员、方法和类
3.不能是public、private、protected和static类型
4.只能创建匿名内部类的一个实例
6.匿名内部类的优点:
1.可以使命名变得简洁
2.使代码更加紧凑、简洁,封装性比内部类好
3.一个类用于继承其他类或是实现接口,无需增加其他的方法,只是对继承方法实现覆盖。
7.匿名内部类的缺点:可读性差。
以下是具体代码实例有助于理解
一、基本形式:
public class Outer1 { public class Inner{ } }二、内部类和外部类间的相互调用及其关系:
package com.yc.bean;public class Outer {private int num=4;//定义成员变量public void test(){Inner inner =new Inner();inner.show();}//下面的代码定义了一个成员内部类class Inner{void show(){//在成员内部类的方法中访问外部类的成员变量System.out.println("num="+num);}}}三、内部类对象的新建及方法的调用:
package com.yc.bean;public class Myclass {public Myclass() { System.out.println("产生MyClass"); } class M { public M() { System.out.println("产生M"); } } public static void main(String[] args) { Myclass my = new Myclass(); // 内部类相当于外部类的属性,内部类对象的产生要依赖于外部类对象,只要是属性可以有的修饰符都可以修饰内部类。 // 内部类在编译时同样会产生class文件。命名为:外部类名$内部类名.class Myclass.M m = my.new M(); } }这是我所知道的一点皮毛希望对需要的朋友有帮助!!!!!!!!!!!!
- 简述java中的内部类及其用法
- Java 内部类简述
- Java内部类简述总结
- java中的内部类的用法
- java 内部类 用法
- Java中的匿名内部类及其使用技巧
- Java 简述匿名内部类的江湖
- java中的内部类
- JAVA中的内部类
- java 中的内部类
- java中的内部类
- Java中的内部类
- JAVA 中的内部类
- java中的内部类
- java 中的内部类
- java中的内部类
- Java中的内部类
- java中的内部类
- bzoj3670动物园【NOI2014】
- Material Design控件介绍(一)——Toolbar,DrawerLayout,NavigationView
- IOC容器其他相关特性设计与实现
- Java 版 (精华区)--Frame和Panel的区别【转载
- 两个java数组删除相同元素
- 简述java中的内部类及其用法
- SQLMAP注入神器笔记
- 百度地图-放大地图
- map容器的erase用法
- CentOS 7 YUM 安装 Nginx
- 啊哈哈哈哈,路径路径
- Ubuntu安装git与版本库的创建
- 阿里13年研发笔试题 - 寻找有序数组中元素值等于其下标的所有元素
- iOS基础开发-字典转模型(模型思想)