成员内部类

Posted wurengen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了成员内部类相关的知识,希望对你有一定的参考价值。

什么是内部类

将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。

成员内部类

成员内部类 :定义在类中方法外的类。

定义格式:


修饰符 class 外部类名称
  修饰符 class 内部类名称
      // ...
    
  // ...

注意:内用外,随意访问;外用内,需要内部类对象。

如何使用成员内部类?

有两种方式:
1. 间接方式:在外部类的方法当中,使用内部类;然后main只是调用外部类的方法。
2. 直接方式,公式:
技术图片

代码举例

定义成员内部类

package demo03;



public class Body  // 外部类

    public class Heart  // 成员内部类

        // 内部类的方法
        public void beat() 
            System.out.println("心脏跳动:蹦蹦蹦!");
            System.out.println("我叫:" + name); // 正确写法!
        

    

    // 外部类的成员变量
    private String name;

    // 外部类的方法
    public void methodBody() 
        System.out.println("外部类的方法");
        new Heart().beat();
    

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

使用成员内部类

package demo03;

/*

如何使用成员内部类?有两种方式:
1. 间接方式:在外部类的方法当中,使用内部类;然后main只是调用外部类的方法。
2. 直接方式,公式:
类名称 对象名 = new 类名称();
【外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();】
 */
public class Demo01InnerClass 

    public static void main(String[] args) 
        Body body = new Body(); // 外部类的对象
        // 通过外部类的对象,调用外部类的方法,里面间接在使用内部类Heart
        body.methodBody();
        System.out.println("=====================");

        // 按照公式写:
        Body.Heart heart = new Body().new Heart();
        heart.beat();
    

执行结果

技术图片

 内部类如何访问同名的变量

代码举例

package demo03;

// 如果出现了重名现象,那么格式是:外部类名称.this.外部类成员变量名
public class Outer 

    int num = 10; // 外部类的成员变量

    public class Inner /*extends Object*/ 

        int num = 20; // 内部类的成员变量

        public void methodInner() 
            int num = 30; // 内部类方法的局部变量
            System.out.println(num); // 局部变量,就近原则
            System.out.println(this.num); // 内部类的成员变量
            System.out.println(Outer.this.num); // 外部类的成员变量
        

    

 

以上是关于成员内部类的主要内容,如果未能解决你的问题,请参考以下文章

内部类练习题(外部类访问内部类成员内部类访问外部类成员顶级类访问内部类成员)

成员内部类

局部内部类和成员内部类

5.7 内部类

Java 成员内部类

成员内部类