§8.1内部类 内部类仅供它的外嵌类使用。 ■内部类的类体不可以声明类变量和类方法 ■内部类可以使用外嵌类的成员变量和成员方法 ■内部类对应的字节码文件格式是“外嵌类$内 部类名” ●如:RedCowForm$RedCow.class ■外部类访问内部类时,必须在内部类名前冠以 其所属外部类的名字才能使用;在用new创建 内部类时,也需在new前冠以对象变量
§8.1 内部类 ◼内部类仅供它的外嵌类使用。 ◼内部类的类体不可以声明类变量和类方法 ◼内部类可以使用外嵌类的成员变量和成员方法 ◼内部类对应的字节码文件格式是“外嵌类$内 部类名” ⚫如:RedCowForm$RedCow.class ◼外部类访问内部类时,必须在内部类名前冠以 其所属外部类的名字才能使用;在用new创建 内部类时,也需在new前冠以对象变量
在外部类外部访问非静态内部类: class Waif class Neif int i=3; public class test{ public static void main(String[]args){ Wai.Nei wnl new Wai().new Nei(); System.out.println("内部类中的变量i:"+wnl.i):
在外部类外部访问非静态内部类: class Wai{ class Nei{ int i=3; } } public class test{ public static void main(String[] args){ Wai.Nei wn1 = new Wai().new Nei(); System.out.println("内部类中的变量i:"+wn1.i); } }
在外部类外部访问静态内部类 class Waif static class Neif int i=3; public class test{ public static void main(String[]args){ Wai.Nei wnl new Wai.Nei(); System.out.println("内部类中的变量i:"+wnl.i);
在外部类外部访问静态内部类: class Wai{ static class Nei{ int i=3; } } public class test{ public static void main(String[] args){ Wai.Nei wn1 = new Wai.Nei(); System.out.println("内部类中的变量i:"+wn1.i); } }
P164实验1
P164 实验1
§8.2匿名类 §8.2.1和子类有关的匿名类 假如没有显式地声明一个子类,而又想用子类创建 一个对象,如何实现? Java允许我们直接使用一个类的子类的类体创建 一个子类对象。 创建子类对象时,除了使用父类的构造方法外还有 类体,此类体被认为是一个子类去掉类声明后的类体, 称作匿名类。 0
10 §8.2 匿名类 §8.2.1 和子类有关的匿名类 假如没有显式地声明一个子类,而又想用子类创建 一个对象,如何实现? Java允许我们直接使用一个类的子类的类体创建 一个子类对象。 创建子类对象时,除了使用父类的构造方法外还有 类体,此类体被认为是一个子类去掉类声明后的类体, 称作匿名类