黑马程序员技术交流社区

标题: 将下面的代码修改正确 [打印本页]

作者: 郭炜    时间: 2012-3-14 11:48
标题: 将下面的代码修改正确
将下面的代码修改正确
class Car {
private String color;
private int speed;
public Car(String color) {
this.color = color;
this.speed = 40;
}
}
class Hummer extends Car {
public Hummer(String color) {
this.speed = 60;
}
}
作者: 王亚男    时间: 2012-3-14 13:59
你没发主函数,这里边儿吧:

首先你的speed是父类的私有变量,子类尽管继承了,也不能直接访问的。所以你子类中的this.speed = 60;是无法编译通过的。
其次就是你父类指定了有参数的构造函数,那么默认无参构造函数就不存在了,所以,子类构造函数内首行需要手工指定父类的构造函数,也就是
Hummer(String color)
{
     super(color);
}
作者: 贠(yun)靖    时间: 2012-3-14 14:16
class Car {
private String color;
private int speed;
public Car(String color) {
this.color = color;
this.speed = 40;
}
}
class Hummer extends Car {
public Hummer(String color) {
super(color)  加这一句 或者在父类添加构造函数  Car(){}   因为子类的构造函数里面第一行都有一个默认的super()调用父类空参构造函数
this.speed = 60;  
}
}

作者: 蒙武辉    时间: 2012-3-14 14:17
我帮你修改如下:
class Car
{
        private String color;
        private int speed;
        public Car(String color)
        {
                this.color = color;
                this.speed = 40;
                System.out.println("我是父类的构造函数");
        }
}
class Hummer extends Car
{
        public Hummer(String color)
        {
                super(color);
                //this.speed = 60;
                System.out.println("我是子类的构造函数");
    }
}
class GenericDemo
{
        public static void main(String[] args)
        {
                Hummer h=new Hummer("red");
        }
}
作者: 张锐    时间: 2012-3-14 14:21
speed color 是private的不可以被本类外的类直接访问,所以子类要设置时候,必须先把父类的相关变量设置为大于private的权限才行比如protected。
再有,因为父类没有无参的构造函数,所以子类必须调用父类有参的构造函数或者添加父类无参的构造函数。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2