android基础篇------------java基础(5) (四种内部类的使用和区别)

内部类:主要用于javaandroid)中的图形化界面中的事件处理。

内部类有4种:

1.       成员内部类

public class TestMemberInner {
	private int age;
	public TestMemberInner(){
		A a = new A();
		a.testA();
	}
	public void test(){
		<span style="color:#ff0000;">A a = new A();
		a.testA();
</span>	}
	<span style="color:#ff0000;">public class A{
		public void testA(){
			System.out.println("我是成员内部类");
		}
	}
</span>	public static void main(String[] args) {
		<span style="color:#ff0000;">TestMemberInner tmi = new TestMemberInner();
		tmi.test();
		// 以下用法不常用
		A a = tmi.new A();
		a.testA();
</span>	}
}

2.       静态内部类

package com.zyy.pm;

/**
 * 静态内部类
 */
public class TestStaticInner {
	private int age;
	public TestStaticInner(){
		A a = new A();
		a.testA();
	}
	public void test(){
		A a = new A();
		a.testA();
	}
	<span style="color:#ff0000;">public static </span>class A{
		public void testA(){
			System.out.println("我是静态内部类");
		}
	}
	public static void main(String[] args) {
		TestStaticInner tmi = new TestStaticInner();
		tmi.test();
		// 以下用法不常用
//		A a = new A();
//		a.testA();
	}
}


3.       局部内部类

         a)   局部内部类之中,只能访问外部类的成员变量和final修饰的局部变量。

public class TestLocalInner {
	<span style="color:#ff0000;">private int i = 10;//<span style="font-size:14px;">只能访问外部类的成员变量</span>
</span>	<span style="color:#006600;">public void test(){
</span>		<span style="color:#ff0000;">final int j = 10;//<span style="font-size:14px;"><span style="font-family:Times New Roman;">final</span>修饰的局部变量</span>
</span>		<span style="color:#ff0000;">class A{
			public void testA(){
				System.out.println(i);
				System.out.println("我是局部内部类");
				System.out.println(j);
			}
		}
</span>		System.out.println(j);
		A a = new A();
		a.testA();
	<span style="color:#009900;">}
</span>	public static void main(String[] args) {
		new TestLocalInner().test();
	}
}

 

4.       匿名内部类:一种特殊的局部内部类

         a)  new + 父类/父接口的形式创建。

         b)  四无二有:没有类名、没有class关键字、有继承关系但是没有继承关键字extends、没有构造方法、有类体。

public class TestAnnoInner {
	public void test(A a){
		a.testA();
	}
	
	public void method(){
		final int i = 10;
		<span style="color:#ff0000;">test(new A(){
			public void testA(){
				System.out.println(i);
				System.out.println("我是匿名内部类。");
			}
		});
</span>	}
	public static void main(String[] args) {
		new TestAnnoInner().method();
	}
}

interface A{
	public abstract void testA();
}

扫一扫下面的二维码,关注我们,每天分享专业的技术文章,让您利用碎片时间,分分钟提升自己的bigger。

android基础篇------------java基础(5) (四种内部类的使用和区别)_第1张图片

你可能感兴趣的:(android基础篇------------java基础(5) (四种内部类的使用和区别))