Java-内部类

涎涎原创约 763 字大约 3 分钟...JavaJava

107-Java-内部类.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

  • 内部类特性
    • 内部类就是定义在另一个类内部的类。
    • 内部类对于同一包中的其它类来说,内部类能够隐藏起来。
  • 注意
    • 内部类可以访问其外部类中所有的属性和方法
    • 无需创建外部类的对象,即可从内部类访问外部类的变量和方法。
    • 必须创建内部类的对象,否则无法从外部类访问内部类的变量和方法。
    • 如果内部类中有和外部类同名的变量或方法,则内部类的变量和方法将获得比外部类的变量和方法更高的优先级。
    • 不能定义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-内部类 知识点的整理与总结的全部内容,另附源码open in new window

上次编辑于:
贡献者: 涎涎
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.4