黑马程序员技术交流社区

标题: 求助构造函数形式和void的区别 [打印本页]

作者: 黑马-郑鹏    时间: 2012-8-16 21:05
标题: 求助构造函数形式和void的区别
        返回值void代表不需要返回数据类型,而构造函数连void都没有。既然void代表不需要返回数据类型,那么构造函数为什么不直接也用void呢?
那样不更好吗?而为什么还要弄个构造函数那样的形式呢?


作者: 方志亮    时间: 2012-8-16 21:09
构造方法是在产生对象时被java系统自动调用的,我们不能在程序中像调用其他方法一样去调用构造方法(必须通过关键词new自动调用它)。
void代表不需要返回数据类型   是对象调用的
构造方法是jvm调用的
作者: 杨彪    时间: 2012-8-16 21:20
(1)构造方法是用于创建对象,并进行初始化值的。
        (2)构造方法的特点:       
                A:和类名相同
                B:没有返回类型
                C:没有返回值
        (3)构造方法的注意事项:
                A:如果一个自定义类没有构造方法,系统会默认给出一个无参构造方法。
                B:如果一个自定义类提供了构造方法,那么,系统将不再给出无参构造方法。
                  这个时候,你可以不使用无参构造方法。
                  如果你想使用,那么,就手动给出无参构造方法。

                建议:一般情况下,我们的自定义类都要手动给出无参构造方法。
        (4)构造方法和成员方法的区别
                A:格式区别
                        构造方法和类名相同,并且没有返回类型,也没有返回值。
                        普通成员方法可以任意起名,必须有返回类型,可以没有返回值。

                B:作用区别
                        构造方法用于创建对象,并进行初始化值。
                        普通成员方法是用于完成某个功能的。
                C:调用区别
                        构造方法是在创建对象时,用new调用的。
                        普通成员方法是由创建的对象调用的。
作者: 黑马-郑鹏    时间: 2012-8-16 21:23
那既然void代表不需要返回值,那么它为什么不直接把void给省略了呢?存在void是不是为了区别对象调用和jvm调用呢?
因为
class  Demo
{
        Demo(){
                System.out.println("hello");
        }
        public static void main(String[] args)
        {
                new Demo();
        }
}
输出结果为 hello
class  Demo
{
        void Demo(){
                System.out.println("hello");
        }
        public static void main(String[] args)
        {
                new Demo();
        }
}
没有输出结果
class  Demo
{
        void Demo(){
                System.out.println("hello");
        }
        public static void main(String[] args)
        {
                new Demo().Demo();
        }
}
输出结果为:hello

作者: 黑马-郑鹏    时间: 2012-8-18 13:31
【以解决】




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