黑马程序员技术交流社区

标题: 构造函数 [打印本页]

作者: 落叶归根    时间: 2013-9-9 18:27
标题: 构造函数
本帖最后由 落叶归根 于 2013-9-10 09:28 编辑

class Person
{
        private String name;
        private int age;
        Person(int age)
        {
                this.age = age;
        }
        Person(String name)   //为什么每次建立个对象他都运行一次,还不如写个构造语句块??????
        {
                this.name = name;
        }
        Person(String name,int age)
        {
                this.name = name;
                this.age = age;
        }

        public void speak()
        {
                System.out.println("name="+this.name+"...age="+this.age);
                this.show();
        }
        public void show()
        {
                System.out.println(this.name);
        }

        /*
        需求:给人定义一个用于比较年龄是否相同的功能。也就是是否是同龄人。
        */
        public boolean compare(Person p)
        {
                return this.age==p.age;

        }
}

class PersonDemo3
{
        public static void main(String[] args)
        {

                Person p1 = new Person(20);
                Person p2 = new Person(25);
                boolean b = p1.compare(p2);
                System.out.println(b);

作者: 深知一生短暂    时间: 2013-9-9 19:27
首先你需要明白。。
1.构造代码块是给所有对象进行统一初始化。
2. 构造函数是给对应的的对象进行初始化。
3.构造代码块中定义的是不同对象共性的初始化内容。

关于你的问题,构造函数初始化是每个对象建立都执行一次的,但只对被建立对象起作用。
作者: 垂天云    时间: 2013-9-9 19:29
本帖最后由 垂天云 于 2013-9-9 19:34 编辑

构造代码块:
作用:给对象进行初始化。
对象一建立就运行,而且优先于构造函数执行。

和构造函数的区别:
构造代码块是给所有对象进行统一初始化,
而构造函数是给对应的对象初始化。
构造代码块中定义的是不同对象共性的初始化内容。

代码示例:
class Person
{
private String name;
private int age;
Person(int age)
{
  this.age = age;
}
Person(String name)
{
  this.name = name;
}
Person(String name,int age)
{
  this.name = name;
  this.age = age;
}

public void speak()
{
  System.out.println("name="+this.name+"...age="+this.age);
  this.show();
}
public void show()
{
  System.out.println(this.name);
}
/*
需求:给人定义一个用于比较年龄是否相同的功能。也就是是否是同龄人。
*/
public boolean compare(Person p)
{
  return this.age==p.age;
}
}



作者: 李锡碧    时间: 2013-9-9 20:02
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的函数初始化构造代码块中定义的是不同对象共性的初始化内容

001.jpg (54.56 KB, 下载次数: 33)

001.jpg

作者: 曾文德    时间: 2013-9-10 00:36
理由很简单。比如你买东西要付钱,你总不可能全部人都付钱把(构造代码块),你只需要给你买的东西店家付钱就可以了(构造函数)。我不相信你会做这么愚蠢的行为对吧
作者: 陶智第    时间: 2013-9-10 08:18
构造代码块是给变量进行统一初始化,每次建立对象时初始化的内容都是一样的,在实际应用中这种方式不太常见
而构造函数是给指定的变量进行初始化,每次建立对象时可以根据不同的需求初始化不同的内容,这种方式在实际应用中比较常见
作者: 杨增坤    时间: 2013-9-10 08:59
楼主,您好!
如果您的问题解决了,请把您问题的未解决更改为已解决
谢谢合作!





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