黑马程序员_java中的内部类

本文详细介绍了Java内部类的概念、特点及其应用场景。通过多个示例解释了如何在不同上下文中实例化内部类,并展示了内部类如何访问外部类的变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                       ------- android培训java培训、期待与您交流! ---------- 

 

内部类,有时叫做嵌套类。内部类允许一个类定义被放到另一个类定义里。内部类是一个有用的特征,因为它们允许将逻辑上同属性的类组合到一起,并在另一个类中控制一个类的可视性。

1

     

public class  Outer1{

         private int   size;

     //定义一个内部类

     public class  Inner{

         public void   doStuff( ){

              //内部类从外部类中接受参数size

              size++;

         }

     }

 

     public void testTheInneer( ){

         Inner i= new Inner( );

         i.doStuff( );

     }

}

   

内部对象拥有一个外部对象的引用:

 

 

 

 

 

2

这个例子阐述了如何在其它类(外部类的外部)实例化内部类:

 

public class  Outer2{

      private int   size;


      public class  Inner{

          public void   doStuff( ){

                 size++;

           }

     }

  }



public class TestInneer( ){

     public static void main(String[ ] args){

         Outer2 outer = new Outer2( );


         //创建内部类对象

         Outer2.Inner inner = outer.new Inner( );

         inner.doStuff( );

     }

}


 

内部类要在外部类实例的上下文中实例化:



3

本例阐述如何区分同名变量:

 

public class Outer3{
		private int size;
		public class Inner{
			private int size;
	 		public void doStuff( int size){
		                    size++;		//本地方法参数
                                         this.size++;   	//内部类参数
                                          Outer.this.size++;	//外部类参数
	 		}
            }
 }

 

 

 

1.4. 4

本例阐述在方法内部定义内部类:

public class Outer4{

     private int size = 5;

      public Object makeTheInner((int localVar){

         final int finalLocalVar = 6;

         class Inner{

              public String toString( ){

                   return (“Inner size=” + size + 

                            ”localVar=” + localVar +  “finalLocalVar=” + finalLocalVar +”);

              }

         }

         return new Inner();

     }

     public static void main(String[] args){

         Outer4 outer = new Outer4();

         Object obj = outer.makeTheInner(47);

         System.out.println(“The object is “ + obj);

     }

}

  

注意:在方法中定义的内部类的方法,不能访问外方法的运行时变量空间,可以访问外方法的非运行时变量空间。 

 内部类属性

 内部类有如下属性:

 内部类只在定义他们的代码段内可见。

内部类可以被定义在方法中。如果方法中的变量被标记为final,那么,就可以被内部类中的方法访问。

内部类可以使用所嵌套类的类和实例变量以及所嵌套的块中的本地变量。内部类可以被定义为abstract.

只有内部类可以被声明为privateprotected,以便防护它们不受来自外部类的访问。

 一个内部类可以作为一个接口,由另一个内部类实现。被声明为static的内部类自动地成为顶层类。这些内部类失去了在本地范围和其它内部类中使用数据或变量的能力。

内部类不能声明任何static成员;只有顶层类可以声明static成员。因此,一个需求static成员的内部类必须使用来自顶层类的成员。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值