如何创建内部类的对象:
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