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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. <blockquote>class Demo6_Extends {
复制代码
为什么这段代码在运行过程中提示无法将类Son中的构造器应用给指定类型.this("王五",25);
this是调用子类的构造方法,如果没有,不是会继承父类的构造方法吗?怎么会提示无法指定呢?求大神告知原因啊~

6 个回复

倒序浏览
  1. class a85 {
  2.         public static void main(String[] args) {
  3.                 Son s1 = new Son();
  4.                 System.out.println(s1.getName() + "..." + s1.getAge());
  5.         }
  6. }
  7. class Father {
  8. private String name;
  9. private int age;

  10. public Father() {
  11. System.out.println("Father 空参构造");
  12. }

  13. public Father(String name,int age) {
  14. this.name = name;
  15. this.age = age;
  16. System.out.println("Father 有参构造");
  17. }
  18. public void setName(String name) {
  19. this.name = name;
  20. }
  21. public String getName() {
  22. return name;
  23. }
  24. public void setAge(int age) {
  25. this.age = age;
  26. }
  27. public int getAge() {
  28. return age;
  29. }
  30. }
  31. class Son extends Father {
  32. public Son() {
  33. this("王五",25);

  34. System.out.println("Son 空参构造");
  35. }


  36. /*public Son(String name,int age) {        //有参构造
  37. super(name,age);
  38. System.out.println("Son 有参构造");
  39. }*/

  40. }
复制代码


回复 使用道具 举报
this是调用子类的构造方法,如果没有,不是会继承父类的构造方法吗?怎么会提示无法指定呢?求大神告知原因啊~r

那种情况用this调用的是成员方法而不是构造方法,this调用构造方法指的是本类的构造方法
回复 使用道具 举报
需要重写父类的带参构造方法吧
回复 使用道具 举报
构造方法不继承
回复 使用道具 举报 1 0

谢谢,非常感谢~
回复 使用道具 举报
你在空参里调用的是父类的构造方法 而不是成员变量

this在本类没有成员变量的情况下 才可以调用成员变量
用this也可以调用父类构造方法   但是会形成一个循环 没有多大意义
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马