2015-10-12 97 views
0

我有類圖書爲什麼我需要初始化varible類時,我想用它

private 
Author author; 
String title; 
int noOfPages; 
etc as get/set... 

類圖書擴展類的作者

public String nameOfAuthor; 

我的問題是: 爲什麼我需要初始化

Author author = new Author(); // in private varible of class Book. 

我想知道爲什麼我在eclipse中編碼

Author author ; // in private varible of class Book. 

Eclipse不返回任何錯誤,但在控制檯它看起來像這樣:

Exception in thread "main" java.lang.NullPointerException 
    at Book.setAuthorName(HelloWorld.java:25) 
    at HelloWorld.main(HelloWorld.java:41) 

的set/get完成。哪裏是作者的名字時,我初始化

Author author; 

????

+3

爲什麼'Book'會擴展'Author'?我從來沒有見過寫過書的書。 – Kayaman

+1

我認爲你誤解了對象初始化的一個重要部分以及Java中構造函數的使用。 – drgPP

+0

謝謝大家!我是OOP的新手,非常感謝你! – OneMoreTime

回答

2

默認情況下,初始化缺少初始化程序的引用類型的字段(靜態或非靜態)的聲明,其中null

這就像如果你這樣做:

Author author = null; 

沒有初始化的局部變量默認情況下未初始化,將產生一個編譯時錯誤,如果它沒有價值使用。

+0

@RealSkeptic我只是想說這個,好點! – drgPP

+0

謝謝! 我初始化了Author作者;我做了setAuthorName()。 isnt作者現在是否等於null?對?或者我誤解了一些東西? – OneMoreTime

+0

@OneMoreTime如果你使用Author Author = new Author;那麼'author'一旦被使用就不會是null。 – ouah

0

您需要創建一個對象,因爲否則變量Author指向無或空。

// Declare the variable 
Author author; 
// Create an object (with the new operator) and assign the object to the variable 
author = new Author(); 

這是回答您的問題嗎?

+0

謝謝! 我初始化了Author作者;我做了setAuthorName()。 isnt作者現在是否等於null?對?或者我誤解了一些東西? – OneMoreTime

0

當你創建一個對象,這樣

Author a; 

這只是

Author a = null;` 

空是一個 「未定義值」。你怎麼能得到什麼名字?沒有什麼不會告訴你「嗨,我的名字是什麼」。

+0

謝謝! 我初始化了Author作者;我做了setAuthorName()。 isnt作者現在是否等於null?對?或者我誤解了一些東西? – OneMoreTime

相關問題