内部类

如何创建内部类的对象:

package com.aff.inter;

import com.aff.inter.Person.Dog;

/*
 类的第五个成员:内部类
    1.类的内部定义的类
    2.内部类的分类:成员内部类(声明在类内部且方法外的 )vs 局部内部类(声明在类的方法里)
    3.成员内部类:
                       1.是外部类的一个成员: 可以有修饰符(四个)       ②static   final
                       2.具体类的特点:abstract      ②还可以在其内部定义属性,方法 ,构造器

    4.局部内部类
    5.关于内部类掌握三点:
                                       ① 创建成员内部类的对象
                                       ②如何区分外部类,内部类的变量
                                       ③局部内部类的使用
*/
public class TestInnerClass {
    public static void main(String[] args) {
        // 创建静态内部类的对象,可以直接通过外部类调用静态内部类的构造器
        Person.Dog d = new Person.Dog();

        // Person.Bird b = new Person.Bird(); 创建不了,因为是非静态的
        // 创建非静态内部类的对象,必须先创建外部类的对象,通过外部类的对象调用内部类的构造器
        Person p = new Person();
        Person.Bird b = p.new Bird();
        b.info();
    }

}

class Person {
    String name;
    int age;

    // 成员内部类(非static的)
    class Bird {
        String name;
        int id;

        public Bird() {
        }

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

        public void info() {
            show();
        }
    }

    // 成员内部类(static 静态的)
    static class Dog {
    }

    public void show() {
        System.out.println("show  shwo");
    }
}

局部内部类的使用:

package com.aff.inter;

//局部内部类的使用
public class TestInnerCla {

}

class OutClass {
    // 局部内部类
    // 如下的使用方式比较少
    public void method1() {
        class InnerClass {
        }
    }

    // 常常使用一个方法,使其返回值为某个类或者接口的对象,而这个类或者接口在方法内部创建
    public Comparable getComparable() {
        // 创建一个实现Comparable接口的类:局部内部类
        class MyComparable implements Comparable {

            @Override
            public int compareTo(java.lang.Object o) {
                return 0;
            }
        }
        // 返回一个实现类的对象
        return new MyComparable();
    }

    
    //匿名局部内部类对象
    public Comparable getComparable1() {
        // 创建一个实现Comparable接口的类:匿名局部内部类对象
        // 返回一个实现类的对象
        return new Comparable() {

            @Override
            public int compareTo(java.lang.Object o) {
                return 0;
            }
        };
        
    }

}
输出结果:
show  shwo
All that work will definitely pay off
原文地址:https://www.cnblogs.com/afangfang/p/12576426.html