内部类——内部类的使用
来源:互联网 发布:福建省广电网络集团 编辑:程序博客网 时间:2024/06/07 04:30
一、在外部类里使用内部类
非静态内部类
对于初始化块:
不允许在外部类的静态初始化块中创建非静态内部类的实例(可以声明变量,但不能创建实例)
可以在外部类的普通初始化块中自由使用非静态内部类(既可以声明变量,又可以创建实例)
对于成员方法:
不允许在外部类的静态成员方法中创建非静态内部类的实例(可以声明形参、局部变量,但不能创建实例)
可以在外部类的非静态成员方法中自由使用非静态内部类(既可以声明形参、局部变量,又可以创建实例)
对于成员变量:
可以定义 非静态内部类 类型的 静态成员变量,但是不能直接进行初始化,也不能在静态初始化块、静态成员方法中进行初始化;只能在构造方法、非静态成员方法、非静态初始化块中对其进行初始化。
可以定义 非静态内部类 类型的 非静态成员变量,并能够直接初始化
静态内部类
可以在外部类的初始化块(静态、非静态)中自由使用静态内部类(既可以声明变量,又可以创建实例,也可以直接访问静态内部类的静态成员)
可以在外部类的成员方法(静态、非静态)中自由使用静态内部类(既可以声明形参、局部变量,又可以创建实例,也可以直接访问静态内部类的静态成员)
可以使用静态内部类来声明静态成员变量(静态、非静态)
二、在外部类外使用内部类
如果希望在外部类以外的地方访问内部类,则内部类不能使用private访问权限控制,private修饰的内部类只能在外部类内部使用。
对于使用其他访问控制符修饰的内部类,则能在访问控制符对应的访问权限内使用。非静态内部类
定义一个带有非静态内部类的类,代码如下:
package org.lgy.study.innerclass;public class Out{public class In{public In(String msg){System.out.println(msg);}public void method1(){System.out.println("********");}}}
下面演示如何在不同的包下使用上面定义的内部类,代码如下:
package org.lgy.study.main;import org.lgy.study.innerclass.Out;public class InnerClassMain{public static void main(String[] args){//在外部类以外的地方定义内部类变量的语法格式为:OuterClass.InnerClass varName;Out.In in = null;//因为非静态内部类的对象必须寄存在外部类的对象里,因此创建非静态内部类对象之前,//必须先创建其外部类对象。并且必须使用外部类对象来调用内部类的构造器。//下面一行代码将创建一个外部类对象,之后创建的内部类对象将寄存在该外部类对象中Out out = new Out();//用过外部类实例和new来调用内部类构造器创建非静态内部类实例in = out.new In("create inner class Out.In");in.method1();Out.In in1 = new Out().new In("create another inner class Out.In");in1.method1();}}
静态内部类
定义一个带有静态内部类的类,代码如下:
package org.lgy.study.innerclass;public class StaticOut{public static class StaticIn{public StaticIn(String msg){System.out.println(msg);}public void method1(){System.out.println("*******");}}}
下面演示如何使用上面定义的内部类,代码如下:
package org.lgy.study.main;import org.lgy.study.innerclass.StaticOut;public class InnerClassMain{public static void main(String[] args){//在外部类以外的地方定义内部类变量的语法格式为:OuterClass.InnerClass varName;StaticOut.StaticIn in = null;//因为静态内部类属于外部类,所以创建内部类对象时必须使用外部类来调用构造器in = new StaticOut.StaticIn("create inner class StaticOut.StaticIn");in.method1();StaticOut.StaticIn in2 = new StaticOut.StaticIn("create another inner class StaticOut.StaticIn");in2.method1();}}
复制去Google翻译翻译结果
0 0
- 内部类——内部类的使用
- 内部类、匿名内部类的使用
- 内部类的使用
- 内部类的使用
- 内部类的使用
- 内部类的使用
- 内部类的使用
- 内部类的使用
- 内部类的使用
- 内部类的使用
- 内部类的使用
- 内部类——静态内部类
- 内部类——局部内部类
- 内部类——匿名内部类
- 内部类——内部类的继承
- 内部类的编码及使用,包括成员内部类,局部内部类,匿名内部类
- 内部类与匿名内部类的概念与使用————Java基础知识
- java—内部类
- C语言 一元二次方程的问题
- Unable to load native-hadoop library for your platform
- java TimerTask定时调度
- Canvas和Drawable 绘制组件
- MAVEN学习
- 内部类——内部类的使用
- Bug调试那些事
- PHP imagick API中文简介
- Log4j自定义Appender
- C++指针基础问题
- permission is only granted to system apps
- 在Oncreat()方法中获取View的宽度和高度
- 基于遗传算法求解TSP问题(JAVA)
- linux svn 切换用户