课后练习 求指导

来源:10-3 Java 中的抽象类

ShortChin

2015-06-03 23:33

父类 Shape

package com.imooc2;

public abstract class Shape {

private float a=5;

private float b=7;

private float d=10;

public abstract void L();

public abstract void S();

}


子类 Rectangle

package com.imooc2;

public class Rectangle extends Shape {

@Override

public void L() {

// TODO Auto-generated method stub

System.out.println("矩形的周长是:"+(a+b));    //在这里会报错

}

@Override

public void S() {

// TODO Auto-generated method stub

System.out.println("矩形的面积是:"+(a*b));     //在这里会报错

}

}


这是怎么回事啊?  求帮助。谢谢

写回答 关注

2回答

  • Mefa
    2015-06-04 01:11:58
    已采纳

    a,b是父类私有变量,子类不能访问,更改为protected吧

  • ShortChin
    2015-06-04 06:35:23

    父类 Vechicle

    package com.vehicle;

    public class Vehicle {

    private int num;

    private String media;

    public void talk(){

    System.out.println("交通工具是用来载人的!");

    }

    }

    子类 Car

    package com.vehicle;

    public class Car extends Vehicle {

    private int num=40;                                 

    private String media="陆地";

    public void talk(){

    System.out.println("汽车在"+media+"上行驶,共载人"+num+"个!");

    }

    }


    这个 是可以的  , 是 因为  父类里面没有赋值的原因吗?


    Mefa

    这里打印出来的变量是car类自身的,car类的私有变量media、num和父类的私有变量只是重名了,并不是说car类中的私有变量覆盖了父类中的同名变量,两者只是同名而已。就算你父类里边的变量赋值了,上边的输出结果打印的一样是car类中定义的变量值。另外这种写法是访问不到父类的同名私有成员变量。

    2015-06-05 01:53:44

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530715 学习 · 6091 问题

查看课程

相似问题