Java-内部类
原创约 763 字大约 3 分钟...
107-Java-内部类.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
- 内部类特性
- 内部类就是定义在另一个类内部的类。
- 内部类对于同一包中的其它类来说,内部类能够隐藏起来。
- 注意
- 内部类可以访问其外部类中所有的属性和方法
- 无需创建外部类的对象,即可从内部类访问外部类的变量和方法。
- 必须创建内部类的对象,否则无法从外部类访问内部类的变量和方法。
- 如果内部类中有和外部类同名的变量或方法,则内部类的变量和方法将获得比外部类的变量和方法更高的优先级。
- 不能定义static变量
- 内部类特性
- 一个类只会被这个类所调用,其他类不会使用他,你可以把它定义成一内部类,这样可以隐藏实现细节,避免错误的调用。
public class Outer
{
private int varOuter=100;
class Inner
{
int varInner=200;
public void showOuter()
{
System.out.println(varOuter); //是否能够输出?
}
}
public void showInner()
{
Inner i=new Inner();
System.out.println(i.varInner);
}
}
- 普通类的访问权限修饰符
- default
- public
- 内部类的访问权限修饰符
- default
- public
- protected
- private
- 在Outer内访问Inner,只需如下:
Inner in = new Inner() ;
- 在Outer外访问Inner,必须如下:
Outer o = new Outer(); //实例化外部类
Outer.Inner oi = o.new Inner(); //实例化内部类
- 静态内部类
- 用static标识的内部类为静态内部类。
- 静态内部类作为外部类的静态成员,不能访问外部类非静态成员。
- 非静态内部类只能定义非静态成员,而静态内部类可以定义静态成员和非静态成员。
- 使用Outer.Inner inn=new Outer.Inner()方式实例化静态内部类。
- 非静态内部类不可以使用上面的方式实例化。
- 局部内部类
- 在一个类的方法体中或程序块内定义的内部类
class A{
int a;
public void method(){
}
class B{ }//类中定义的内部类
}
class A{
int a;
public void method( int c ){
int b=0;
class B{ }//局部内部类
}
}
- 示例
public class Outer2 {
public int a = 1;
private int b = 2;
public void method( final int c) {
int d = 3;
final int e = 2;
class Inner {
private void iMethod( int e) {
//System.out.println(e);
}
}
}
}
- 在方法定义的内部类中只能访问方法中的final类型的局部变量
示例代码
package 内部类;
public class OuterClass {
private int id;
private String name;
//成员内部类
private class InnerClass1{
private int id;
private String name;
}
//静态内部类,所有对象共享
static class InnerClass2{
}
public void show() {
//局部内部类
class InnerClass3{
}
}
}
分割线
相关信息
以上就是我关于 Java-内部类 知识点的整理与总结的全部内容,另附源码
Powered by Waline v2.15.4