java中的几种内部类

java中的内部类比c++中的嵌套类功能更多,应用更广,java中的内部类的好处就内部类具有访问特权,可以访问外部类中私有成员,在这里我们不去探讨内部类的原理,因为比较复杂,我们只看这么用,我们从例子出发;

java中的内部类分为以下几种:

1、最常见的拿一种,在一个类中定义一个类;

2、局部内部类,在一个方法中定义一个类,1中说的内部类是在类中直接定义的

3、匿名内部类,我们在阅读一些源码中,经常可以看到匿名类的使用,最简单的就是在多线程的例子中,如下

 public static void main(String[] args) {

        Thread t = new Thread() {

            public void run() {

                for (int i = 1; i <= 5; i++) {

                    System.out.print(i + " ");

                }

            }

        };

        t.start();

    }

4、静态内部类,内部类中不需要引用外围类对象,我们就可以用static来声明这个内部类,用的比较少,本文中就不举例子了,我们主要看一下前面的三种

一、常见的内部类

/**
 * 常见的内部类的使用
 */
public class Test200 {
	public void test(){
		Test t = new Test();
		t.test();
	}
	class Test{
		public void test(){
			System.out.println("ok");
		}
	}
}

二、局部内部类(本例中我们在内部类访问了局部变量和外部类的私有变量)

/**
 * 局部内部类;在函数中定义一个类
 */
public class Demo100 {
	private static int c = 10;
	public static void main(String[] args) {
		test(10);
	}
	public static void test(final int b){
		class Test{//局部内部类
			void test(){
				System.out.println(b);//应用了局部变量;要将局部变量声明为final,不然报错
				System.out.println(c);//应用了类成员的私有变量
			}
		}
		Test t = new Test();
		t.test();
	}
}

三、匿名内部类

注意: 使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口,

父类:

public  abstract class Test {
	abstract public void test();
}

匿名内部类中:

public static void main(String[] args) {
		
		Test t = new Test()//匿名内部类
		{
			public void test(){//重写了父类中的test()方法
				System.out.println("ok");	
			}
		};
		t.test();
	}

以上是java中内部类的概念,例子没有什么用处,只是为了帮助大家理解一下概念!





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值