黑马程序员技术交流社区

标题: 关于构造函数和void的一些疑问。 [打印本页]

作者: 疯狂的学渣    时间: 2014-12-21 12:42
标题: 关于构造函数和void的一些疑问。
最近看书,看到构造函数,然后看着书上的内容敲了一遍,检查了好几遍,都敲不出结果,就是敲不出构造函数。
最后发现,书上class的前面,只有public的修饰符,而我习惯性地,加上了public void。
那么问题来了,void按照我的理解,是无返回值的意思,怎么就禁止的构造函数的输出呢?
小弟的还在学基础部分,可能问题有点简单,求给点建议。

class Demo1
{
        public static void main(String[] args)
        {
                System.out.println("Starting...");
                Duck d = new Duck();
        }
}


class Animal
{
        public void Animal()
        {
                System.out.println("Making an animal.");
        }
}

class Duck extends Animal
{
        public void Duck()
        {
                System.out.println("Making a duck.");
        }
}




111.PNG (16.69 KB, 下载次数: 68)

111.PNG

222.PNG (16.5 KB, 下载次数: 71)

222.PNG

作者: caobin    时间: 2014-12-21 12:45
你加上了void这就不叫构造函数了吧
作者: lwh316658735    时间: 2014-12-21 12:55
构造函数是在创建对象时调用,如果java开发人员设计了返回值,难道你一个引用类型还可以接收两个数据
作者: 双鱼座程序员    时间: 2014-12-21 13:15
  1. class Demo1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println("Starting...");
  6.                Duck d = new Duck();
  7.         }
  8. }

  9. class Animal
  10. {
  11.                 //构造函数不用定义返回值类型。void
  12.         public Animal()
  13.         {
  14.                 System.out.println("Making an animal.");
  15.         }
  16. }

  17. class Duck extends Animal
  18. {
  19.         public Duck()
  20.         {
  21.                 System.out.println("Making a duck.");
  22.         }
  23. }
复制代码

作者: zqbemail    时间: 2014-12-21 13:32
构造函数不需要void,同是void类型并不是没有返回值,而是返回空。
也就是所有的void方法最后,JAVA会默认增加一个return ;   你可以加上试试。
因为构造函数不能有返回值,是对象初始化的过程,所以不能存在return语句。
这是我的理解,供你参考。
作者: jxlovqqvo    时间: 2014-12-21 13:52
构造方法规定的不能有返回值,void也不行,因为就不能这么写,写了就变成了方法

作者: ben_vs_cong    时间: 2014-12-21 13:58
你应该是没有弄明白构造方法是什么,你的构造方法格式不对,固定格式是 权限修饰符 方法名和类名相同。它的格式跟普通的方法不一样的。而且你不写也是有默认的构造方法,而且你只要在构造方法主体什么都不写也是可以创建对象的。那样就可以不输出。总之就是构造函数的格式不是你那样的。记住格式就行了,其他都跟函数一样,只是没有返回值类型。
作者: qowoeo7538    时间: 2014-12-21 14:42
构造函数不允许有返回值的。
作者: 程梦真    时间: 2014-12-21 14:55
加上了void就是不是构造方法  , 一定要谨记构造方法的格式。
作者: woaixuexi    时间: 2014-12-21 15:34
看到你这个题,我又重温了构造函数:)
作者: 疯狂的学渣    时间: 2014-12-22 22:44
谢谢各位的回答,现在理解好多了,我的理解是,构造函数需要返回的是对象,所有不能加void和return。

作者: 叫我王大锤    时间: 2014-12-22 22:47
4楼解释 很详细
作者: qowoeo7538    时间: 2014-12-22 23:57
构造函数没有VOID的。
作者: 7788665544    时间: 2014-12-22 23:59
构造函数加了void就是普通函数了。。
作者: kerner    时间: 2014-12-23 00:20
构造函数如果有返回值,构造函数是编译器调用的,编译器该如何处理返回值?
作者: 呢?    时间: 2014-12-23 00:25
方法名必须一致,没有返回值类型,没有返回值,才叫构造函数。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2