定义在类的内部的类,内部类分为: 成员内部类(声明在类内部,方法外)和局部内部类(声明在方法内)
成员内部类具有成员的特点(四个修饰符,普通类只有public和default;
static修饰,普通类不能使用static),
也具有类的特点。
成员内部类对象的创建:
class Person{
String name = "person";
class Student{
String name = "Student";
public void show(String name){
System.out.println(name); // test
System.out.println(this.name); //Student
System.out.println(Person.this.name); //Person
}
}
static class Teacher{
}
}
class Test{
public static void main(String[] args){
//创建静态内部类对象,直接通过外部类调用内部类的构造器
Person.Teacher t = new Person.Teacher();
//创建非静态内部类对象,必须先创建外部类的对象,通过对象调用内部类的构造器
Person p = new Person();
Person.Student s = p.new Student();
s.show("test");
}
}
局部内部类: 常用的方法是在类方法内部定义一个实现某接口的类,返回一个该类的对象。
class Person{
public Men getBoy(){
class Boy implements Men{
public void male(){
System.out.println("Boy实现");
}
}
return new Boy();
}
}
interface Men{
public abstract void male();
}
class Test{
public static void main(String[] args){
Person p = new Person();
Men m = p.getBoy();
m.male();
}
}