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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 kuroro自走核炮 于 2014-4-17 15:24 编辑
  1. class ExtendsDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Xiali mycar = new Xiali(70,"yello");
  6.                 mycar.getColor();
  7.                 mycar.getSpeed();
  8.         }
  9. }
  10. class Car
  11. {
  12.         private int speed;
  13.         private String color;

  14.         public Car(int speed,String color)
  15.         {
  16.                 this.speed = speed;
  17.                 this.color = color;
  18.         }

  19.         public void getColor()
  20.         {
  21.                 System.out.println(color);
  22.         }

  23.         public void getSpeed()
  24.         {
  25.                 System.out.println(speed);
  26.         }
  27. }
  28. class Xiali extends Car
  29. {
  30.         public Xiali(int speed,String color)
  31.         {
  32.                 super(int speed,String color);
  33.         }
  34. }        
复制代码



编译时期的错误提示:  D:\java\413>javac YC.javaYC.java:35: 错误: 需要 '.class'
                super(int speed,String color);
                          ^
YC.java:35: 错误: 需要';'
                super(int speed,String color);
                               ^
YC.java:35: 错误: 需要';'
                super(int speed,String color);
                                            ^
3 个错误
不太明白这是为什么呢?



7 个回复

倒序浏览
super(int speed,String color);
你这里只是调用父类的有参数的构造函数,并不是声明函数方法,前面不要加int、String这些类型信息
回复 使用道具 举报
  1. class ExtendsDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Xiali mycar = new Xiali(70,"yello");
  6.                 mycar.getColor();
  7.                 mycar.getSpeed();
  8.         }
  9. }
  10. class Car
  11. {
  12.         private int speed;
  13.         private String color;

  14.         public Car(int speed,String color)
  15.         {
  16.                 this.speed = speed;
  17.                 this.color = color;
  18.         }

  19.         public void getColor()
  20.         {
  21.                 System.out.println(color);
  22.         }

  23.         public void getSpeed()
  24.         {
  25.                 System.out.println(speed);
  26.         }
  27. }
  28. class Xiali extends Car
  29. {
  30.         public Xiali(int speed,String color)
  31.         {
  32.                 super(speed,color);//这是传给父类构造函数的参数,不需要加int、String
  33.         }
  34. }        
复制代码
回复 使用道具 举报
super(int speed,String color);
这个是调用方法,speed和color都是实参,实参是不用数据类型的。
就像你定义一个方法add(int x,int y) 你在调用的时候会写add(int 1,int 2)吗
回复 使用道具 举报
左拉 发表于 2014-4-17 15:18
super(int speed,String color);
这个是调用方法,speed和color都是实参,实参是不用数据类型的。
就像你定 ...

大概明白点了,你的意思是这个参数是父类中已经存在了,super中相当于借用,所以只要说名字就OK?
回复 使用道具 举报
kuroro自走核炮 发表于 2014-4-17 15:20
大概明白点了,你的意思是这个参数是父类中已经存在了,super中相当于借用,所以只要说名字就OK? ...

对,就类似普通方法中的传参数
回复 使用道具 举报
左拉 发表于 2014-4-17 15:23
对,就类似普通方法中的传参数

哦哦,多谢,这我就明白了!
回复 使用道具 举报
改写成super(speed,color);就行了,调用方法不用写参数类型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马