为了账号安全,请及时绑定邮箱和手机立即绑定

课后练习 求指导

父类 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 回答

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

0 回复 有任何疑惑可以回复我~

父类 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+"个!");

}

}


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


0 回复 有任何疑惑可以回复我~
#1

Mefa

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

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530553    人
  • 解答问题       6091    个

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

进入课程

课后练习 求指导

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信