Java_內部類

A:內部類java

  在類中定義的類就是內部類this

 B:內部類訪問特色
   a:內部類能夠直接訪問外部類的成員,包括私有。緣由是:他能獲取到外部類名的引用      外部類名.this
   b:外部類要訪問內部類的成員,必須建立對象。spa

   c:外部類名.內部類名 對象名 = 外部類對象.內部類對象;code

      Outer.Inner in = new outer().new Inner()
   對象

public class Demo1_InnerClass {
	public static void main(String[] args){
        #建立類的對象
		Outer.Inner in = new Outer().new Inner();
		in.method();
		
	}
}

#定義外部類Outer以及內部類Inner
class Outer{
     #外部類的私有成員變量
     private int num = 10; class Inner{ public void method(){ System.out.println(num); } } }

  

注意一:若是內部類被私有,那麼就得在外部類中提供一個調用私有類的方法blog

public class Demo1_InnerClass {
    public static void main(String[] args){

        Outer o = new Outer();
        o.print();
        
    }
}


class Outer{
    private int num = 10;
#內部類被私有化
    private class Inner{
        public void method(){
            System.out.println(num);
        }
    }
#定義一個能夠調用私有內部類的方法
    public void print(){
        Inner i = new Inner();
        i.method();
    }
}

 

 注意二:若是內部類是靜態的,調用方法直接是:外部類名.內部類名   對象名 =  外部類名.內部類對象(由於static修飾的能夠直接用類名.調用),若是靜態內部類裏面的方法也是靜態的,直接就用類名調用就能夠了class

 
 
class Outer{
    private int num = 10;
    static class Inner{
        public void method(){
            System.out.println("method");
        }
     public static void print(){
         System.out.println("print");
   }

  }

}


public class Demo1_InnerClass {
    public static void main(String[] args){
    
        Outer.Inner oi = new Outer.Inner();
        oi.method();
     Outer.Inner.print();
    }
}
 
 

 

注意三:若是想直接訪問外部類的成員變量,那麼就是Outer.this

class Outer {
  public int num = 10;
  class Inner {
    public int num = 20;
    public void show() {
      int num = 30;
      System.out.println(num);   #輸出30,就近原則
      System.out.println(this.num);   #輸出20,調用本類成員變量
      System.out.println(Outer.this.num);   #輸出10,獲取外部類引用
    }
  }
}變量

相關文章
相關標籤/搜索