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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© rolling-stone 中级黑马   /  2014-8-1 11:23  /  1600 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第一个版本:
  1. class Bird
  2. {
  3.         private String name;
  4.         public Bird(){}
  5.         public Bird(String name)
  6.         {
  7.                 this.name = name;
  8.         }
  9.         public void Walk()
  10.         {
  11.                 System.out.println("Walk");
  12.         }
  13.         public String getName()
  14.         {
  15.                 return name;
  16.         }
  17.         public void setNmae(String name)
  18.         {
  19.                 this.name = name;
  20.         }
  21. }
  22. class Chicken extends Bird
  23. {
  24.         private String crest;
  25.         Chicken(){super();}
  26.         Chicken(String name,String crest)
  27.         {
  28.                 super(name);
  29.                 this.crest = crest;
  30.         }
  31.         public String getCrest()
  32.         {
  33.                 return crest;
  34.         }
  35.         public void wu()
  36.         {
  37.                 System.out.println("咕咕叫");
  38.         }
  39. }
  40. class ChickenDemo
  41. {
  42.         public static void main(String[] args)
  43.         {
  44.                 Chicken c = new Chicken("xiaoming","red");
  45.                 System.out.println(c.getName());
  46.                 System.out.println(c.getCrest());
  47.                 c.Walk();
  48.                 c.wu();
  49.         }
  50. }
复制代码
第二个版本:
  1. class Bird
  2. {
  3.         private String name;
  4.         public Bird(){}
  5.         public Bird(String name)
  6.         {
  7.                 this.name = name;
  8.         }
  9.         public void Walk()
  10.         {
  11.                 System.out.println("Walk");
  12.         }
  13.         public String getName()
  14.         {
  15.                 return name;
  16.         }
  17.         public void setNmae(String name)
  18.         {
  19.                 this.name = name;
  20.         }
  21. }
  22. class Chicken extends Bird
  23. {
  24.         private String crest;
  25.         Chicken(){super();}
  26.         Chicken(String name,String crest)
  27.         {
  28.                 super(name);
  29.                 this.crest = crest;
  30.         }
  31.         public String getCrest()
  32.         {
  33.                 return crest;
  34.         }
  35.         public void wu()
  36.         {
  37.                 System.out.println("咕咕叫");
  38.         }
  39. }
  40. class ChickenDemo
  41. {
  42.         public static void main(String[] args)
  43.         {
  44.                 Chicken c = new Chicken();
  45.                 c.Chicken("xiaoming","red");
  46.                 System.out.println(c.getName());
  47.                 System.out.println(c.getCrest());
  48.                 c.Walk();
  49.                 c.wu();
  50.         }
  51. }
复制代码
两个版本就差在最后的主函数里面,一个传参数的方式是:
Chicken c = new Chicken("xiaoming","red");
另一个传参数的方式是;
Chicken c = new Chicken();
c.Chicken("xiaoming","red");
但是第二种会报错,为什么?

8 个回复

倒序浏览
c.Chicken("xiaoming","red"); 这句话是什么意思???
你用对象去调用有参的构造函数? 构造函数是是用来初始化的 只能 new  有参 或者无参的构造函数!
回复 使用道具 举报
渴望学习 发表于 2014-8-1 11:38
c.Chicken("xiaoming","red"); 这句话是什么意思???
你用对象去调用有参的构造函数? 构造函数是是用来 ...

现在明白了,谢谢
回复 使用道具 举报
Chicken c = new Chicken();
c.Chicken("xiaoming","red");
构造函数的作用是实例化一个对象,并对该对象进行初始化,同一个对象肯定不能实例化两次的。
简单的比方,你第一句好比你妈把你生下来了,第二句的意义就是你妈把你再生一遍。这样难道可以吗?
回复 使用道具 举报
java中只要使用关键new一次,就会产生个对象,产生这个对象的过程是jvm自己调用与你传入参数项匹配的构造函数,首先你的用法就错误了。生成新对象只能使用new关键字去调用相应的构造函数,没楼主你的那种用法。
回复 使用道具 举报
对象调用构造函数?哥们,你该多看看接口了
回复 使用道具 举报
上面的大片代码是怎么传上来的啊,带行数的
回复 使用道具 举报
奋上 发表于 2014-8-1 20:31
上面的大片代码是怎么传上来的啊,带行数的

编辑上面有个<>符号,把代码复制到这个里面就行了.
回复 使用道具 举报
rolling-stone 发表于 2014-8-1 20:56
编辑上面有个符号,把代码复制到这个里面就行了.

好的,谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马