快捷搜索: 王者荣耀 脱发

深圳Java培训:浅谈Java中的内部类

深圳Java培训:浅谈Java中的内部类

最近在讲Java中的内部类,感觉内部类实际上对于初学者用得不多,那么内部类简单的说,其实就是在一个类的内部定义的类。
按照定义的情况分为:成员内部类,局部内部类,静态内部类,匿名内部类。
成员内部类,就是定义一个当作类的成员变量的类。
局部内部类,就是在类里面定义一个当作局部变量的类,通常是在方法或代码块中使用。
静态内部类,就是在类中定义一个静态变量,而该静态变量是一个类。
匿名内部类,通常是在创建一个接口对象,该对象是在创建对象的同时实现接口,而该接口的实现只是在此处使用一次,所以不需要定义名字,称为匿名内部类。
请看如下代码:

public interface MyInter{ public void method(); }

public class Outter { // public static int i; // 普通静态变量 // 静态内部类 public static class Inner3{ } // public String name; // 普通成员变量 // 成员内部类 public class Inner1{ }

public void test() {

// String n; // 普通局部变量 // 局部内部类 class Inner2{ } // 匿名内部类,在运行时会生成一个临时的名字,类似:Outter$1.java MyInter in = new MyInter() { @Override public void method() { } }; } }

上面的代码展示了4种不同的内部类的情形。 接下来看看这4种情形的具体用法。

静态内部类: public class Outter { public int o1; public static int os1; public void om1() { System.out.println(Inner3.ns3); System.out.println(new Inner3().n3); System.out.println(“om1”); } public static void oms1() { System.out.println(“oms1”); } // public static int i; // 静态内部类 public static class Inner3{ // 在静态内部类中可以定义基本的成员和方法,以及静态成员和方法 public int n3; public static int ns3; public void m3() { System.out.println(“m3”); }

public static void ms3() {
		System.out.println(os1);
		oms1();
		System.out.println("ms3");
	}
}

}

静态内部类的使用: public static void main(String[] args) { Outter.Inner3 i3 = new Outter.Inner3(); i3.n3 = 3; Outter.Inner3.ns3 = 4; Outter.Inner3.ms3(); i3.m3(); } 可以看到静态内部类和静态变量使用方式差不多,直接使用类名即可。

成员内部类: //成员内部类 public class Inner1{ public int n1; public int o1; public void m1(int o1) { o1 = 1; // 局部变量 this.o1 = 2; // 当前属性 Outter.this.o1 = 4; // 外部属性 om1(); System.out.println(“m1”); } }

成员内部类的使用: public static void main(String[] args) { // 调用 Outter.Inner1 i1 = new Outter().new Inner1(); i1.n1 = 3; i1.m1(3); } 由于是成员,所以需要先创建对象才能使用。

局部内部类和匿名内部类:相当于局部变量,只能在方法里面调用和创建对象等,可以调用外部的变量和方法,外部不能调用它。请看如下方法: public void test() { // String n; // 局部内部类 class Inner2{ public void m2() { o1 = 3; } } Inner2 i2 = new Inner2(); i2.m2();

// 匿名内部类,在运行时会生成一个临时的名字,类似:Outter$1.java
MyInter in = new MyInter() {
	@Override
	public void method() {
		o1 = 3;
	}
};
in.method();

} 至此,内部类简单的使用基本就到这了。

经验分享 程序员 微信小程序 职场和发展