JAVA的内部类
2015-07-10 00:04
686 查看
什么是内部类?
内部类就是定义在另一个类里面的类。与之对应,包含内部类的类被称为外部类
//外部类HelloWorld
内部类的主要作用:
1.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
2.内部类的方法可以直接访问外部类的所有数据,包括私有的数据
3.内部类所实现的功能使用外部类同样可以实现,只是有时候使用内部类更方便
内部类有几种?
1.成员内部类
2.静态内部类
3.方法内部类
4.匿名内部类
一、成员内部类
成员内部类是最常见的内部类,也称为普通内部类
成员内部类的使用方法:
1.内部类可以使用任意的访问修饰符:如public、protected、private等
2.内部类可以直接访问外部类中的数据而不受访问修饰符的影响
3.如果内部类和外部类有相同的变量,在内部类中默认调用的变量是内部类的变量,如果想调用外部类的变量,用this关键字指代
4.内部类创建对象:内部类 对象 = 外部类对象.new 内部类();
5.外部类和内部类经过javac命令编译后,会产生两个.class文件:外部类.class 和 外部类$内部类.class
6.内部类可以直接使用外部类的变量和方法,但是外部类不可以直接访问内部类的成员和方法
二、静态内部类
1.静态内部类不能直接访问外部类的非静态成员,但可以通过new 外部类().成员的方式访问
2.如果外部类与内部类有相同的静态成员,对外部类的访问:外部类.静态变量 和 内部类.静态变量
3.创建内部类的对象时,不需要外部类的对象,可以直接创建:内部类 对象名 = new 内部类();
三、方法内部类
1.方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用
2.方法内部类不能在外部类的方法以外的地方使用
3.方法内部类不能使用访问控制符和static修饰符
内部类就是定义在另一个类里面的类。与之对应,包含内部类的类被称为外部类
//外部类HelloWorld
<span style="font-size:14px;">public class HelloWorld{ //内部类Inner public class Inner{ public void show(){ System.out.println("这是内部类Inner里面的show()方法"); } } public static void main(String[] args){ //创建外部类对象 HelloWorld hello = new HelloWorld(); //创建内部类对象 Inner inner = hello.new Inner(); } }</span>
内部类的主要作用:
1.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
2.内部类的方法可以直接访问外部类的所有数据,包括私有的数据
3.内部类所实现的功能使用外部类同样可以实现,只是有时候使用内部类更方便
内部类有几种?
1.成员内部类
2.静态内部类
3.方法内部类
4.匿名内部类
一、成员内部类
成员内部类是最常见的内部类,也称为普通内部类
成员内部类的使用方法:
1.内部类可以使用任意的访问修饰符:如public、protected、private等
2.内部类可以直接访问外部类中的数据而不受访问修饰符的影响
3.如果内部类和外部类有相同的变量,在内部类中默认调用的变量是内部类的变量,如果想调用外部类的变量,用this关键字指代
4.内部类创建对象:内部类 对象 = 外部类对象.new 内部类();
5.外部类和内部类经过javac命令编译后,会产生两个.class文件:外部类.class 和 外部类$内部类.class
6.内部类可以直接使用外部类的变量和方法,但是外部类不可以直接访问内部类的成员和方法
二、静态内部类
1.静态内部类不能直接访问外部类的非静态成员,但可以通过new 外部类().成员的方式访问
2.如果外部类与内部类有相同的静态成员,对外部类的访问:外部类.静态变量 和 内部类.静态变量
3.创建内部类的对象时,不需要外部类的对象,可以直接创建:内部类 对象名 = new 内部类();
<span style="font-size:14px;">//外部类 public class Outer { public int a = 99;// static int b = 2; //静态内部类 public static class Inner{ int b =2; public void test(){ System.out.println("外部类a"+new Outer().a); System.out.println("外部类b"+Outer.b); System.out.println("内部类b"+new Inner().b); } } public static void main(String[] args) { //静态内部类可以直接实例化对象 Inner in = new Inner(); in.test(); } }</span>
三、方法内部类
1.方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用
2.方法内部类不能在外部类的方法以外的地方使用
3.方法内部类不能使用访问控制符和static修饰符
<span style="font-size:14px;">//外部类 public class Outer{ //外部类中的方法 public void show(){ final int a=15;//常量 int b=13;//变量 //内部类 class Inner{ int c=2;//内部类中的变量 public void print(){ System.out.println("访问外部类中的方法中的常量a"+a); System.out.println("访问内部类中的变量c"+c); } } Inner in = new Inner();//创建方法内部类的对象 in.print();//调用内部类的方法 } //测试方法内部类 public static void main(String[] args) { Outer ou = new Outer(); ou.show(); } }</span>
相关文章推荐
- Java回调函数的理解
- springmvc4+spring data jpa
- 从Eclipse导入工程到Android Studio
- 多线程学习(三)Java ThreadLocal
- Java入门123:一个老鸟的Java学习心得(二维码版)
- Java Annotation
- AJAX与spring mvc交互
- spring mvc 和ajax异步交互完整实例
- 桥接模式
- quarze的工作原理
- Spring学习(22)--- AOP之Advice应用(下)
- Java基础之正则表达式
- Java.Lang.NoSuchMethod 错误
- 一位java大牛10年资料总结
- JAVA IO流
- java 多态测试(abstract)
- 我的java开发历程---仅以此文纪念我博客的开通
- Java基础恶补——内存泄露、内存溢出
- Java String如何变成UTF-8字节数组的?
- Jdk提供的动态代理示例