成员内部类

大部分时候,类被定义成一个独立的程序单元,在某些情况下,也会把一个类放在另一个类的内部定义,这个定义在其它类内部的类就叫内部类。包含内部类的类也被称为外部类。成员内部类可以使用外部类的成员变量和成员方法, 不管用什么权限修饰,不管是private还是public都可以使用,因为,这是在内部类的内部使用。
内部类的作用:
1:内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其它类访问该类。
2:内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成员之间可以互相访问,但是外部类不能访问内部类的内容。
3:匿名内部类适合用于创建仅需一次使用的类。

下面是一个内部类的例子:
class Outer { //外部类

class Inner {    //内部类
    
    public void testInner() {
        System.out.println("内部类的成员方法");
    }
    
}

public void testOuter() {
    System.out.println("外部类的成员方法");
}   

}

在外部类中创建内部类对象,只需要在外部类中的成员函数中创建即可

class Outer { //外部类

class Inner {    //内部类
    
    public void testInner() {
        System.out.println("内部类的成员方法");
    }
    
}

public void testOuter() {
    System.out.println("外部类的成员方法");
}   
    //在此添加一个创建内部类对象的方法
   public void createInnnerClass() {
    Inner inner = new Inner();
    inner.testInner();
}

}

在Outer类的外部创建Inner类的对象
格式如下:
外部类名.内部类名 内部类对象名 = new 外部类名().new 内部类名();
例如:
Outer.inner inner = new Outer().new Inner();
代码如下:

class Demo1 {

  public static void main(String[] args) {
              Outer.Inner inner = new Outer().new Inner();
      inner.testInner();
}

}
如果内部类和外部类存在同名的成员变量,这里默认是就近原则,使用的是内部类的成员变量
如果想要使用外部类的成员变量的:
格式:
外部类名.this.同名成员变量;
外部类名.this.同名成员方法(参数列表);

你可能感兴趣的:(成员内部类)