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

© 马上都有 中级黑马   /  2014-4-12 15:47  /  1428 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class ceshi9
{
      public staticvoid main(String[] args)
      {         
            GoodStudenta3 = new GoodStudent("fwefew");
      }
}
class Person
{
      Person()
      {
            System.out.println("Person构造方法一被调用");
      }
      Person(Stringa)
      {
            System.out.println("Preson构造方法二被调用");
      }
      Person(Stringa,String b)
      {
            System.out.println("Preson构造方法三被调用");
      }
}
class Student extends Person
{
      Student()
      {
            System.out.println("Student构造方法一被调用");
      }
      Student(Stringa)
      {
            System.out.println("Student构造方法二被调用");
      }
    Student(Stringa,String b)
      {
            System.out.println("Student构造方法三被调用");
       }
}
class GoodStudent extends Student
{
      GoodStudent()
      {
            System.out.println("GoodStudent构造方法一被调用");
      }
      GoodStudent(Stringa)
      {
            System.out.println("GoodStudent构造方法二被调用");
            Studentaa = new Student("fwefewf","6534165");
            Personbb = new Person("fsdfew");
      }
      GoodStudent(Stringa,String b)
      {
            System.out.println("GoodStudent构造方法三被调用");
            
      }
}

//为什么不能创建对象,然后 对象.方法 调用构造函数 如:
//Person bb = new Person();
//bb.Person();

评分

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

查看全部评分

10 个回复

倒序浏览
本帖最后由 Kelvinhu 于 2014-4-12 16:11 编辑

出错的地方帮你改好了。


  1. public class ceshi9
  2. {
  3.       public static void main(String[] args)
  4.       {         
  5.             GoodStudent a3 = new GoodStudent("fwefew");
  6.       }
  7. }
  8. class Person
  9. {
  10.       Person()
  11.       {
  12.             System.out.println("类Person构造方法一被调用");
  13.       }
  14.       Person(String a)
  15.       {
  16.             System.out.println("类Preson构造方法二被调用");
  17.       }
  18.       Person(String a,String b)
  19.       {
  20.             System.out.println("类Preson构造方法三被调用");
  21.       }
  22. }
  23. class Student extends Person
  24. {
  25.       Student()
  26.       {
  27.             System.out.println("类Student构造方法一被调用");
  28.       }
  29.       Student(String a)
  30.       {
  31.             System.out.println("类Student构造方法二被调用");
  32.       }
  33.     Student(String a,String b)
  34.       {
  35.             System.out.println("类Student构造方法三被调用");
  36.        }
  37. }
  38. class GoodStudent extends Student
  39. {
  40.       GoodStudent()
  41.       {
  42.             System.out.println("类GoodStudent构造方法一被调用");
  43.       }
  44.       GoodStudent(String a)
  45.       {
  46.             System.out.println("类GoodStudent构造方法二被调用");
  47.             Student a1 = new Student("fwefewf","6534165");
  48.             Person  b = new Person("fsdfew");
  49.       }
  50.       GoodStudent(String a,String b)
  51.       {
  52.             System.out.println("类GoodStudent构造方法三被调用");
  53.             
  54.       }
  55. }
复制代码

调试结果:
  1. 类Person构造方法一被调用
  2. 类Student构造方法一被调用
  3. 类GoodStudent构造方法二被调用
  4. 类Person构造方法一被调用
  5. 类Student构造方法三被调用
  6. 类Preson构造方法二被调用
复制代码


//为什么不能创建对象,然后 对象.方法 调用构造函数 如:
//Person bb = new Person();
//bb.Person();

。。搞错了 这个是构造函数,在new的时候默认调用一次。

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 linweiwen 于 2014-4-12 16:11 编辑

对楼主的问题理解有误,该回复删除。
回复 使用道具 举报
linweiwen 发表于 2014-4-12 16:02
对楼主的问题理解有误,该回复删除。

。。。我觉得你回答的是正确的。。。怎么删除掉了。。
回复 使用道具 举报
补充一下。。。构造器(构造函数)总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。。。

corejava上面看的。

评分

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

查看全部评分

回复 使用道具 举报
Kelvinhu 发表于 2014-4-12 16:12
。。。我觉得你回答的是正确的。。。怎么删除掉了。。

我是看教学视频过程中,休息回复一下,
没有看代码就开始回复了,
然后复制到Eclipse里面看,
好像你的疑惑不是我回答的地方,
懒得再研究,也就把回复删除了,你明白了就行了。
回复 使用道具 举报
构造方法就是得用new这种方式来调用。
回复 使用道具 举报
Kelvinhu 发表于 2014-4-12 16:02
出错的地方帮你改好了。

谢谢,多多支持哦

回复 使用道具 举报
linweiwen 发表于 2014-4-12 16:02
对楼主的问题理解有误,该回复删除。

我们是解决问题,不必纠结这些
回复 使用道具 举报
因为构造函数是在对象一创建时就被调用了,而且它只执行一次。所以当你再次调用时,就出错了。你要想得到person()这个构造函数,只需要Person bb = new Person()这一步就可以了。
回复 使用道具 举报
先理解什么是构造函数?构造函数是在创建对象的时候对对象初始化,构造函数名和类名是一样的,而类里的不同的方法都不与类名同名,所以你可以用对象调用方法,而不能调用构造函数。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马