1. 程式人生 > >java中內部類和異常類

java中內部類和異常類

這是在eclipse中建立的一個Example8_2的類,其中有些錯誤,我想在這裡註明一下。只是想以後自己看看,希望不要在出現這樣的錯誤。

package s8_2;



/**
 * @author Administrator
 *本節主要是講內部類和異常類
 */


/*
 * 內部類主要是在以一個類裡申明的一個類,內部類外面的類叫做外嵌類是叫其特點是:在內部類裡外嵌類的成員變數和方法都有效
 * 但是不可以申明類變數和類方法。
 *  
 */
class RedCowForm{
String fortName;
RedCow cow; //這是內部類生命的變數
RedCowForm(){}//構造方法
public RedCowForm(String s) {//帶引數的構造方法
cow =new RedCow (150,115,5000);
fortName =s;
 
}
void showCowName(){//在外嵌類的方法中呼叫內部類的方法。
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+",體重:"+",價格:"+price);
}
}
}




public class Example8_2 {


public static void main(String[] args) {
// TODO 自動生成的方法存根
RedCowForm form=new RedCowForm();

form.showCowName();//使用外嵌類建立的物件只能使用外嵌類的成員方法,用該方法呼叫內部累的方法。

}


}

結果:Exception in thread "main" java.lang.NullPointerException
at s8_2.RedCowForm.showCowName(Example8_2.java:39)
at s8_2.Example8_2.main(Example8_2.java:49)

為什麼出現這樣的結果,因為是RedCowForm form=new RedCowForm();少了引數,呼叫form.showCowName();方法時,cow沒有建立,只是申明瞭,所以呼叫時出錯了.加上去後就對了。


public class Example8_2 {


public static void main(String[] args) {
// TODO 自動生成的方法存根
RedCowForm form=new RedCowForm("xxxx");
form.showCowName();//使用外嵌類建立的物件只能使用外嵌類的成員方法,用該方法呼叫內部累的方法。

}


}