A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 落叶归根 中级黑马   /  2013-9-9 18:27  /  1226 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 落叶归根 于 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);

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

6 个回复

倒序浏览
首先你需要明白。。
1.构造代码块是给所有对象进行统一初始化。
2. 构造函数是给对应的的对象进行初始化。
3.构造代码块中定义的是不同对象共性的初始化内容。

关于你的问题,构造函数初始化是每个对象建立都执行一次的,但只对被建立对象起作用。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
本帖最后由 垂天云 于 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;
}
}


评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的函数初始化构造代码块中定义的是不同对象共性的初始化内容

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

001.jpg

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
理由很简单。比如你买东西要付钱,你总不可能全部人都付钱把(构造代码块),你只需要给你买的东西店家付钱就可以了(构造函数)。我不相信你会做这么愚蠢的行为对吧

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
构造代码块是给变量进行统一初始化,每次建立对象时初始化的内容都是一样的,在实际应用中这种方式不太常见
而构造函数是给指定的变量进行初始化,每次建立对象时可以根据不同的需求初始化不同的内容,这种方式在实际应用中比较常见

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
楼主,您好!
如果您的问题解决了,请把您问题的未解决更改为已解决
谢谢合作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马