大概是这样的:
我调用Sphere中被覆盖的方法时就会报错,问过老师老师说位置不对,但是改了很多次也没改出个所以然来,应该怎么改呢?(估计调用Cylinder也会报错= =)
public class Circlekind{
public static void main(String[] args)
{
Circle a = new Circle();
a.r=10;
System.out.println("半径为10的圆的面积为"+a.getArea());
Circle b= new Circle();
b.r=10;
System.out.println("半径为10的圆的周长为"+b.getLength());
Sphere c= new Sphere();
c.r=10; 《----------------报错点
}
class Circle {
int o;
int r;
public double PI=3.1415926;
public double getArea()
{
return PI*r*r;
}
public double getLength()
{
return 2*PI*r;
}
class Sphere extends Circle
{
int r;
int O;
//定义球心位置
public double getArea()
// 求球体表面积
{
return 4*PI*r*r;
}
public double getSize()
// 求球体体积
{
return 4/3*PI*r*r*r;
}
}
class Cylinder extends Circle
{
int r;
int h;
//定义圆柱体的高
public double getArea()
//求圆柱体表面积
{
return 2*PI*r*r+2*PI*r*h;
}
public double getSize2()
//求 圆柱体体积
{
return PI*r*r*h;
}
}
}
java继承中被覆盖的方法为什么不能访问?
答案:3 悬赏:0 手机版
解决时间 2021-01-27 13:03
- 提问者网友:却不属于对方
- 2021-01-27 07:13
最佳答案
- 五星知识达人网友:毛毛
- 2021-01-27 07:22
1. 我非常想知道你这些类之间是什么关系, 把代码贴全点
2. 就目前看你的代码, Circlekind类下面有一个Circle内部类,而 Circle类下面又有两个内部类Sphere 和 Cylinder
3. 就看你贴的代码就是有问题的, 如果是内部类, 那么在你那个main方法里访问就应该会有问题
4. 如果说Circlekind类是一个单独的类的话, 只是Circle类里面有两个内部类, 那是没有问题的,但是你访问的写法是有问题的,应该这么写
public class Circlekind {
public static void main(String[] args) {
Circle a=new Circle();
a.r = 10;
System.out.println("半径为10的圆的面积为" + a.getArea());
Circle b = new Circle();
b.r = 10;
System.out.println("半径为10的圆的周长为" + b.getLength());
Sphere c = new Circle().new Sphere(); //这样调用
c.r = 10;
}
}
//运行结果如下(我没计算正确还是错误,直接贴出来的)
半径为10的圆的面积为314.15926
半径为10的圆的周长为62.831852
5. 既然Sphere 和 Cylinder都已经继承了Circle类, 那干嘛还在自己的类中去定义
int r; 这个变量
2. 就目前看你的代码, Circlekind类下面有一个Circle内部类,而 Circle类下面又有两个内部类Sphere 和 Cylinder
3. 就看你贴的代码就是有问题的, 如果是内部类, 那么在你那个main方法里访问就应该会有问题
4. 如果说Circlekind类是一个单独的类的话, 只是Circle类里面有两个内部类, 那是没有问题的,但是你访问的写法是有问题的,应该这么写
public class Circlekind {
public static void main(String[] args) {
Circle a=new Circle();
a.r = 10;
System.out.println("半径为10的圆的面积为" + a.getArea());
Circle b = new Circle();
b.r = 10;
System.out.println("半径为10的圆的周长为" + b.getLength());
Sphere c = new Circle().new Sphere(); //这样调用
c.r = 10;
}
}
//运行结果如下(我没计算正确还是错误,直接贴出来的)
半径为10的圆的面积为314.15926
半径为10的圆的周长为62.831852
5. 既然Sphere 和 Cylinder都已经继承了Circle类, 那干嘛还在自己的类中去定义
int r; 这个变量
全部回答
- 1楼网友:長槍戰八方
- 2021-01-27 08:29
Sphere 中的 int r,int o 去掉,不要
然后用的时候
Circle c= new Sphere();
c.r=10;
还有就是要在覆盖的方法上加上
@重写 关键字
- 2楼网友:一把行者刀
- 2021-01-27 07:33
final修饰的方法能被子类使用,但final修饰的类不能被继承
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯