1 内部类

外嵌类的成员变量和方法可以被内部类调用。(因为类的成员变量和方法在整个类中有效)

内部类的类体中不可以声明类变量和类方法。(但自己的类型可以是static。那么外嵌类就可以直接调用内部类创建对象。)

外嵌类的类体中可以用内部类声明对象,作为外部类的成员。

内部类仅供它的外部类使用,其他类不可以用某个类的内部类声明对象。

自己的理解:外嵌类可以通过创建对象来调用内部类的对象来调用内嵌类的成员变量和方法,但是其他的类不能够在自己本身里创建这个内部类的对象,也就不能够通过自己的对象调用这个内部类的对象。

 

 

内部类的类型可以被修饰为static内部类,这样一来,程序就可以在其他类中使用static内部类来创建对象了。

static内部类不能操作外嵌类中的实例变量。

 

这一节主要记住什么是内部类就行了,解决问题不一定非要使用内部类,static内部类的内容更细致,不必背,在使用中翻书就好。然后还有一点是,在有内部类的类中,经过编译对应的字节码除了外嵌类和内部类,还有一个字节码,就是

外嵌类名$内部类名,把字节码转给别人时,不要漏掉了这个字节码,相当于要传三个字节码。(外嵌类,内部类以及外嵌类名$内部类名)

package P163内部类;
class RedCowForm{
static String formName;
RedCow cow;
RedCowForm(){
}
RedCowForm(String s){
cow=new RedCow(160,112,5000);
formName =s;
}
public void showCowMess(){
cow.speak();
}
class RedCow{
String cowName="红牛";
int height,weight,price;
RedCow(int h,int w,int p){
height=h;
weight=w;
price=p;
}
void speak(){
System.out.println("偶是:"+cowName+"身高:"+height+"cm 体重:"+weight+"kg,生活在"+formName);
}
}

}
public class Example7_1 {
public static void main(String[] args) {
RedCowForm form=new RedCowForm("红牛农场");
form.showCowMess();
form.cow.speak();
//如果类RedCow是static类型的类,那么就可以直接用外嵌类调用这个内部类来创建对象
//RedCowForm.RedCow redCow=new RedCowForm.RedCow(180,119,2);

}

}



posted @ 2022-07-08 19:56  馅饼丶  阅读(163)  评论(0)    收藏  举报