1-成员内部类入门

一、简要介绍

what?

成员内部类定义在在 outer类 成员属性 的位置,属于类成员的内部类。

how?

1
2
3
4
5
6
7
8
9
class Outer{
//内部类
class inner{
private String name="我是一个内部类的私有属性";
void innerprint(){
System.out.println(outerName);
}
}
}

二、特点

说明:成员内部类定义在在 outer类 成员属性 的位置,并且没有 static 修饰。

  1. 作用域问题:

    1. 在 成员内部类 中可以随意访问 outer类 中的内容,outer类也可以使用 成员内部类。

    2. 成员内部类访问 outer类 的属性。

      1. 直接使用属性名
      2. ==—->包括private属性–>因为在同一个类中==
      3. ==就近原则==>如果外部类的属性成员名字 和 内部类相同
        1. 通过==外部类.this.属性==来访问外部类的成员
    3. 外部类的成员使用成员内部类

      1. ==同样包括 private 属性==
      1
      2
      3
      4
      5
      1.创建内部类的对象
      neinner inner = new inner();
      2.使用 inner.xx即可
      System.out.println(inner.name);

    4. 外部其他类–访问—->成员内部类

      外部类名.成员内部类 xxx =new 外部类对象.new 成员内部类

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32

      public class memberClass_1 {
      public static void main(String[] args) {
      Outer outer = new Outer();
      outer.print();
      //外部其他类访问成员内部类的两种方法
      //1.使用外部类的对象创建--->成员内部类也是外部类对象的一个成员。
      Outer.inner inner = outer.new inner();
      inner.innerprint();
      //2.在外部类中创建一个方法--->返回成员内部类对象
      Outer.inner inner1= outer.getinnerInstace();
      inner1.innerprint();
      }
      }

      class Outer{
      private String outerName="我是一个外部类的私有属性";
      class inner{
      private String name="我是一个内部类的私有属性";
      void innerprint(){
      System.out.println(outerName);
      }
      }
      void print(){
      inner inner = new inner();
      System.out.println(inner.name);
      inner.innerprint();
      }
      public inner getinnerInstace(){
      return new inner();
      }
      }
  2. 可以添加任意修饰符(public、protected、默认、private),因为它的地位就是==一个成员==