2015-10-12 99 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

相关问题