内部类:在一个类中定义另一个类,类中的类称为内部类(相对于外嵌类)。
基本属性:
外嵌类的属性在内部类中有效,内部类可以在方法中调用外嵌类的方法;
外嵌类的类体可以用内部类声明对象作为外嵌类的属性;
除外嵌类,其他类不可以用内部类声明对象。
以下为简单的内部类应用的例子:
RedCowForm.java
public class RedCowForm {
public static String formname;
RedCow cow;//用内部类声明对象,作为外嵌类的成员
public RedCowForm() {}
public RedCowForm(String s) {
cow = new RedCow(100,200,10000);//内部类声明的对象实例化过程
formname=s;
}
public void printOuter() {//外嵌类的方法
System.out.println("outer class methods");
}
void show() {//外嵌类的方法通过内部类对象调用内部类的方法
cow.speak();
}
class RedCow{//编译生成RedCowForm$RedCow.class
String cowname;
int height;
int weight;
int price;
public RedCow(int h,int w,int p) {//内部类的构造方法
cowname="红牛";
height=h;
weight=w;
price=p;
}
void speak() {
printOuter();//外嵌类的方法调用
System.out.println("我是"+cowname+"在"+formname+"weight: "+weight);
}
}
}
Ex7_1.java
public interface Ex7_1 {
public static void main(String[] args) {
RedCowForm form=new RedCowForm("红牛农场");//仅能用外嵌类创建对象
form.cow.speak();//对象的属性的方法,直接调用内部类的方法
form.show();//对象的方法调用内部类的方法。
}
}