java(24) - 内部类详解

一.内部类:


       1).内部类的定义:通俗的讲就是在一个类的里面再定义一个类。

         2).内部类可以public,private,protected等修饰,也可以是静态static。


二.四种内部类的实现:


1).静态内部类:

例子:

class InnerClass {
	
	public static int count = 10;
	//静态内部类
	public static class Inner{
		
		public void print(){
			
			System.out.println(count);
			
		}
	}
}
public class StaticInnerClass {
 
	public static void main(String[] args) {
		
		InnerClass.Inner  inner = new InnerClass.Inner();
		inner.print();
	}
}

结果:10

      静态内部类只能访问外部类的静态成员变量与静态方法。因为内部类被静态化,所以可以直接new出内部类的对象。


2).成员内部类:

例子:

class MemberClass{
	public int count = 10;
	public static int number = 1;
	//成员内部类
	public class Inner{
		
		public void print(){
			
                   System.out.println(count+"   "+number);
			
		}
	}
}
public class MemberClassTest {

	
	public static void main(String[] args) {
		//通过外部类的对象,new出内部类对象。
		MemberClass.Inner mem = (new MemberClass()).new Inner(); 
		
		mem.print();
		
	}
}

结果: 10   1  成员内部类作为外部类的成员,可以直接使用外部类的所有成员和方法,内部类对象的创建要先创建外部类的对象才能创建内部类对象:OuterClass.InnerClass inner = (new OuterClass()).new innerClass();  如果想在成员内部类使用外部类的成员变量则需要:OuterClass.this.变量名。

3).局部内部类 :

例子:

class LocalInnerClass{
	public void test(){
		class Inner{
			public void print(){
				System.out.println("HAHA");
			}
		}
		new Inner().print();
	}
}
public class LocalInnerClassTest {
	public static void main(String[] args) {
		LocalInnerClass  inn = new LocalInnerClass();
		inn.test();
	}
}

结果:HAHA

   局部内部类是指定在方法或作用域中的。只能在该方法或作用域中使用,退出这些作用域之后则无法使用。

   局部内部类只能访问方法中用final类型的变量。


4).匿名内部类:

例子:

class AnonymousClass{
	
	@SuppressWarnings("deprecation")
	public void print(Date  data){
		
        System.out.println(data.toLocaleString());
		
	}
	
}
public class AnonymousClassTest {

	public static void main(String[] args) {
		
		AnonymousClass an = new AnonymousClass();
		
		an.print(new Date());
	
		an.print(new Date()
		{
			@Override
			@Deprecated
			public String toLocaleString() {
				// TODO Auto-generated method stub
				return "HAHA";
			}
			
		});
		
	}
}

结果:

2015-3-17 21:28:11
HAHA

     

       匿名内部类隐式的继承一个父类或一个接口。匿名内部类是不能加访问修饰符的。这种内部类用在事件上比较多。



     





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值