一、定义
Java支持在一个类中定义另一个类,这样的类称作内部类,而包含内部类的类称为内部类的外嵌类。内部类就是外嵌类里定义的一个类型而已,只不过,该类型仅仅限于在本外嵌类中使用。
二、访问权限
外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。 内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。其他类不可以用这个类的内部类声明对象
访问修饰符:public ,protected private 对内部类没有区别,因为内部类仅仅在该外嵌类中可以被使用。
注意的是,Java编译器生成的内部类的字节码文件的名字和通常的类不同,内部类对应的字节码文件的名字格式是“外嵌类名$内部类名”,例如,例子1中内部类的字节码文件是RedCowForm$RedCow.class。因此,当需要把字节码文件复制给其他开发人员时,不要忘记了内部类的字节码文件。
内部类示例:
public class Example6_1 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
RedCowForm form = new RedCowForm("红牛农场");
form.showCowMess();
form.cow.speak();
}
}
public class RedCowForm {
public static String formName;
RedCow cow; //内部类声明对象
public RedCowForm() { // 无参构造方法
}
public RedCowForm(String s) { // 含参构造方法
cow = new RedCow(150,112,5000);
formName = s;
}
public void showCowMess() {
cow.speak();
}
class RedCow { //内部类的声明
protected String cowName = "红牛";
private int height,weight,price;
public RedCow(int h,int w,int p){
height = h;
weight = w;
price = p;
}
public void speak() {
System.out.println("偶是"+cowName+",身高:"+height+"cm 体重:"+
weight+"kg,生活在"+formName);
}
}
}