java中內部類和異常類
阿新 • • 發佈:2019-02-08
這是在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();//使用外嵌類建立的物件只能使用外嵌類的成員方法,用該方法呼叫內部累的方法。
}
}