我是这样理解的,构造函数肯定没有任何返回值的,也不能返回viod,如果你加上返回值,通常javac会提示一个警告“此方法具有构造函数名”。在new一个对象的时候,系统调用的肯定是实际的构造函数,就是没有返回值的那个,而有返回值的不是构造函数,而是一个普通函数而已,并且java不建议说明和使用这样的函数。
具体到你的代码,我觉得Dbconn dbconn=new Dbconn();这个语句应该调用的是基类Object的构造函数。Connection myconn=dbconn.Dbconn(); 是对象调用其普通函数,普通函数中创建了myconn对象,所以没有问题。
改成Connection myconn=dbconn.getConn(); 后,由于myconn没有创建,一直为空,所以运行出错了。