JAVA构造函数不能使用void关键字问题
作者:大牛在路上
这篇文章主要介绍了JAVA构造函数不能使用void关键字问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
JAVA构造函数不能使用void关键字
Java 函数的构造函数一般不返回值,所以新手容易添加void关键字,这时候编译器容易报错
java.lang.NullPointerException
这是因为构造函数代表的函数子函数可能会有返回值,系统就不让在早期构造函数写void。
public class testMap { //这里的void就会引起报错!!!!!!!!! public **void** testMap() { } public void testPut() { } void foreach() { } public static void main(String[] args) { testMap tp=new testMap(); tp.testPut (); tp.foreach(); } }
JAVA构造方法前加void有什么作用
构造方法前面是没有任何返回符,不能加任何返回类型,包括void.一个构造方法一旦加了void,那么这个就不是构造方法了,变成了一个普通的方法。
至于你程序出现的情况,是这样的。任何一个Java类,如果你不自己定义构造方法,那么都有一个缺省的无参数的构造方法。但是当你定义了自己的构造方法,那么缺省的构造方法就没有了。
当你不加void的时候,表示你定义了一个有两个参数的构造方法,first(int a,int b),而你在实例类的时候,却t=new first(); 但是找不到这个类的无参数构造方法,所以就出错了。
当你加void的时候void first(int a,int b),就变成了你类的一个方法,这时候你没有为类自定义任何一个构造方法,所以系统为你分配一个缺省的无参数构造方法,在实例类的时候,就可以使用t=new first();
解决这个问题
你可以自己填写一个无参数构造方法
public first(int a,int b){ ... } public first(){ ... }
也可以,在实例类的时候,不要使用无参数的构造方法,使用t=new first(3,2);
btw:构造方法前面加void就变成了成员方法,这是Java编程考试中经常出现的一个考点。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。