《黑马程序员》java内部类个人总结

本文详细解析了Java内部类的四种类型:静态内部类、成员内部类、局部内部类和匿名内部类,包括它们的定义、特点以及如何在实际编程中运用。

--------------------- <a href="http://edu.youkuaiyun.com"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.youkuaiyun.com"target="blank">.Net培训</a>、期待与您交流! ----------------------

 ----------- android培训java培训、java学习型技术博客、期待与您交流! ------------


内部类是指一一个外部类的内部在定义一个类。内部类作为外部类的一个成员,并且依附于外部类存在的。内部类可为静态,private,和protected。

   内部类分为四种:

    1.静态内部类 

    使用static修饰,声明在类体中

    静态内部类可以访问外部类中的静态成员

    生成一个静态内部类不需要外部类对象 

列如:

public class S1 {
	public static String s;
	public static void SetS(String ma)
	{
		s=ma;
	}


   static class Koo//内部类
   {
	 public Koo()
	 {   SetS("sdad");
		 System.out.println("....."+s);
	 }
    }
   public static  void main(String[] args)
   { 
 	S1.Koo koo=new Koo();		
 }
}
      2.成员内部类

         声明在类体中,不适用static

        必须有外部类的实例才能创建内部类实例

        内部类实例可以访问外部类的成员变量

例如:

import 内部类.Goo.Moo;

class Goo
{
	int a=1;
	static  int bm=2;
	class Moo
	{
		int add()
		{
			return a+bm;  //外部类中的成员变量都可以在内部类中使用
		}
	}
	
}
public class InnerDemo {
      
	public static void main(String[] args) {
		// TODO Auto-generated method stub
     Goo goo=new Goo();//创建外部类对象
     Moo moo=goo.new Moo();//利用外部类对象创建内部类对象
     System.out.print("..."+moo.add()
   )  
};
      3.局部内部类

          把类声明在方法中,就是局部内部类
          局部内部类不能有访问说明符,
可以访问当前代码块内的常量和此外围类所有的成员

 例如:

public class LocalInner {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
         final int a=2;
		class Foo//局部类部类
		{
			int b=1;
			public  int add()
			{
				return a+b;//调用外围变量
			}
		}
		Foo f=new Foo();
	System.out.println(f.add());
	}

}
        4.匿名内部类

            可以卸载任何地方,不能写构造器

            可以从抽象类和接口继承,但必须提供抽象的实现

            使用时只能创建一个实例,创建时用new

            匿名内部类是局部类的一个特例,所以对局部内部类的限制对匿名内部类也有效

列如:  

interface Zoo{
	int add();
}
abstract class Yoo{
	 abstract int add();
}
public class AnnInner {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
    final int a=2;
      Yoo yoo=new Yoo(){//从抽象类继承的内部类实例
	       int add()
	      {
		   return a+1;
	        }
      };
      Zoo  zoo=new Zoo(){//从接口实现的匿名内部类实例
        	 public int add()
        	 {
        		 return a+3;
        	 }
       };    
       System.out.println(zoo.add());
       System.out.println(yoo.add());
	}

}
  

          

    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值