内部类是定义在类中的类。
内部类把逻辑上相关的类放在一起。而有的内部类不会在其他地方用到,它没有类名,在定义的时候就生成一个该类的实例,称为匿名内部类。匿名内部类是一种特殊的内部类。
当然啦!可以把内部类看作外部类的一个成员,它拥有自己的成员变量和成员方法。通过实例化对象可以访问其成员变量或调用成员方法。
把类的定义放在一个用于封装它的类的内部。
在外部类中,通过一个内部类对象引用内部类中的成员,同样啦!在内部类中也可以直接引用它的外部类的成员,内部类也可以通过创建对象从外部类之外被调用,但必须在内部声明为public。
原理:
在内部类对象中保存了一个对外部类对象的引用,当在内部类的成员方法中访问某一变量时,如果在该方法和内部类中都没有定义这个变量,调用就会被传递给内部类保存的那个对外部类的引用,通过这个外部类对象的引用去调用这个变量。
//filename:Group.java public class Group{ private int age; public class Student{ String name; public Student(String n,int a){ name=n; age=a; } public void show(){ System.out.print("姓名:"+this.name+"年龄:"+age); } } public void show(){ Student stu=new Student("张三 ",18); stu.show(); } public static void main(String[] args){ Group g=new Group(); g.show(); } } //姓名:张三 年龄:18
是指可以利用内部类创建没有名字的内部类,进一步声明内部类和创建一个该类的对象。
使用方法:
//filename:A_1.java public class A_1{ public static void main(String[] args){ ( new Inner(){ void setName(String n){ name=n; System.out.print("姓名:"+name); } } ).setName("张 三"); } static class Inner{ String name; } } //姓名:张 三
思路: