Java 内部类-成员内部类

成员内部类
也叫做成员内部类,或者普通内部类,是指在类内部定义的类。

1.成员内部类

public class Person {
    public int age;
    /**
     * 普通成员方法
     */
    public void eat() {
        System.out.println("在吃东西");

    }

    /**
     * @return 内部类实例
     */
    public Heart getHeart() {
        return new Heart();
    }

    /**
     * 成员内部类
     */
    public class Heart {
        int age = 22;

        /**
         * 内部类普通成员方法
         */
        public void beat() {
            eat();
            System.out.println("心脏在跳动" + age);
            System.out.println("---------------");
        }

    }

}

以上代码中public class Heart {} 就是成员内部类,成员内部类中也有成员属性和成员方法如 public void beat() {}int age = 22;,访问内部类的成员方法有多种方法:

1.外部类.new 内部类

 Person.Heart myHeart= new Person().new Heart();
 myHeart.beat();

2.外部类对象.new 内部类

Person person = new Person();
myHeart= person. new Heart();
myHeart.beat();

3.外部类.get方法

 Person person = new Person();
 myHeart= person.getHeart();
 myHeart.beat();

4.访问成员内部类成员属性方法 内部类对象.属性名

 System.out.println(person.age); // 外部类成员属性
 System.out.println(myHeart.age); // 内部类成员属性

5.在成员内部类可以访问外部类方法和属性,外部类访问成员内部类的成员 需要先实例化内部类

 public void beat() { // 内部类
            eat(); // 外部类的成员方法
            System.out.println( age); // 内部类的age 属性
            System.out.println(Person.this.age); // 外部类的成员属性
        }
    /**
     * 外部类普通成员方法
     */
    public void eat() {
        Heart heart= new Heart(); // 实例化内部类
        System.out.println(heart.gender); // 访问成员内部类属性
        heart.beat(); // 访问内部类方法
    }

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