举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > java内部类成员类 Java 内部类成员

java内部类成员类 Java 内部类成员

2023-05-17 10:20 Java教程

java内部类成员类 Java 内部类成员

java内部类成员类

Java内部类成员类是指在一个类中定义的另一个类,它可以访问外部类的所有成员,包括私有成员。内部类可以被声明为public、protected、private和包访问权限。

内部类可以有多个实例,而不影响外部类的实例。这使得内部类能够独立于外部类而存在,并具有自己的特性和行为。此外,内部类还可以访问其外围作用域中的数据,这使得它们能够更好地封装对象的信息。

Java内部类成员分为四大类:静态内部类、非静态内部类、匿名内部类和嵌套内部类。

 
// 静态内部类 
public class OuterClass { 

    static class StaticInnerClass { 

        public void doSomething() { 

            System.out.println("Static Inner Class"); 

        } 

    } 
} 
 
// 非静态内部类  
public class OuterClass {  

    class NonStaticInnerClass {  

        public void doSomething() {  

            System.out.println("Non-Static Inner Class");  

        }  

    }  
}  

Java 内部类成员

Java面向对象设计 - Java内部类成员


内部类可以访问其所有实例成员,实例字段和其封闭类的实例方法。

class Outer {
  private int value = 2014;
  public class Inner {
    public void printValue() {
      System.out.println("Inner: Value  = " + value);
    }
  } // Inner class ends here

  public void printValue() {
    System.out.println("Outer: Value  = " + value);
  }
  public void setValue(int newValue) {
    this.value = newValue;
  }
}

public class Main {
  public static void main(String[] args) {
    Outer out = new Outer();
    Outer.Inner in = out.new Inner();

    out.printValue();
    in.printValue();

    out.setValue(2015);

    out.printValue();
    in.printValue();
  }
}

上面的代码生成以下结果。

例子

以下代码显示如何访问内部类的内部变量。

public class Main {
  public static void main(String[] args) {
    Outer out = new Outer();
    Outer.Inner in = out.new Inner();

    out.printValue();
    in.printValue();

    out.setValue(3);

    out.printValue();
    in.printValue();
  }
}
class Outer {
  private int value = 1;
  public class Inner {
    private int value = 2;
    public void printValue() {
      System.out.println("Inner: Value  = " + value);
    }
  } // Inner class ends here
  public void printValue() {
    System.out.println("Outer: Value  = " + value);
  }
  public void setValue(int newValue) {
    this.value = newValue;
  }
}

上面的代码生成以下结果。

在内部类中使用关键字this

以下代码显示如何在内部类中使用关键字this。

class Outer {
  private int value = 1;
  class QualifiedThis {
    private int value = 2;

    public void printValue() {
      System.out.println("value=" + value);
      System.out.println("this.value=" + this.value);
      System.out.println("QualifiedThis.this.value=" + QualifiedThis.this.value);
    }

    public void printHiddenValue() {
      int value = 2;
      System.out.println("value=" + value);
      System.out.println("this.value=" + this.value);

      System.out.println("QualifiedThis.this.value=" + QualifiedThis.this.value);
    }
  }
  public void printValue() {
    System.out.println("value=" + value);
    System.out.println("this.value=" + this.value);
  }  
}

public class Main {
  public static void main(String[] args) {
    Outer outer = new Outer();
    Outer.QualifiedThis qt = outer.new QualifiedThis();
    System.out.println("printValue():");
    qt.printValue();

    System.out.println("printHiddenValue():");
    qt.printHiddenValue();
    outer.printValue();
  }
}

上面的代码生成以下结果。

隐藏变量

如果实例变量名称被隐藏,您必须使用关键字this或类名称以及关键字this限定其名称。

class TopLevelOuter {
  private int v1 = 100;

  // Here, only v1 is in scope
  public class InnerLevelOne {
    private int v2 = 200;

    // Here, only v1 and v2 are in scope
    public class InnerLevelTwo {
      private int v3 = 300;

      // Here, only v1, v2, and v3 are in scope
      public class InnerLevelThree {
        private int v4 = 400;

        // Here, all v1, v2, v3, and v4 are in scope

      }
    }
  }
}

从外部类引用变量

以下代码显示如何从外部类引用变量。

public class Test{
  private int value = 1;
  public class Inner {
    private int value = 2;

    public void printValue() {
      System.out.println("Inner: Value  = " + value);
      System.out.println("Outer: Value  = " + Test.this.value);
    }
  } // Inner class ends here

  public void printValue() {
    System.out.println("nOuter - printValue()...");
    System.out.println("Outer: Value  = " + value);
  }

  public void setValue(int newValue) {
    System.out.println("nSetting  Outer"s value to " + newValue);
    this.value = newValue;
  }

}
阅读全文
以上是名动网为你收集整理的java内部类成员类 Java 内部类成员全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们