这是我编的一个java小程序,刚学没基础,我不知道错在哪里了,一直都不知道怎么改:希望大家给点指点

题目,如下:首先编写一个抽象类,要求该抽象类有三个抽象方法:publicabstractvoidf(intx);publicabstractvoidg(intx,inty... 题目,如下:
首先编写一个抽象类,要求该抽象类有三个抽象方法:
public abstract void f(int x);
public abstract void g(int x,int y);
public abstract double h(double x);
然后分别给出这个抽象类的3个子类。要求:在应用程序的主类中使用这些子类创建的对象,再让他们的上转型对象调用方法风f(),g(),和h().

代码如下:
abstract class A
{
public abstract void f(int x);
public abstract void g(int x,int y);
public abstract double h(double x);
}

class B extends A
{
public void f(int x)
{
System.out.println("x");
}
}

class C extends A
{
public void g(int x,int y)
{
System.out.println("x+y");
}

}

class D extends A
{
public double h(double x)
{
return Math.sqrt(x);
}
}

class Text
{
public static void main(String args[])
{
A i=new B();
i.f(2);
A j=new C();
j.g(2,3);
A k=new D();
k.h(9);
}

}

但是错误如下:
---------- javac ----------
Test.java:8: B 不是抽象的,并且未覆盖 A 中的抽象方法 h(double)
class B extends A
^
Test.java:17: C 不是抽象的,并且未覆盖 A 中的抽象方法 h(double)
class C extends A
^
Test.java:27: D 不是抽象的,并且未覆盖 A 中的抽象方法 g(int,int)
class D extends A
^
3 错误

Output completed (0 sec consumed) - Normal Termination
展开
 我来答
逆十字血
2012-10-20 · TA获得超过141个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:182万
展开全部
当一个类继承抽象类,只有两种状况:
1. 这个类是一个普通的类。也就是说,他要实现父类中的所有抽象方法,然后成为一个普通的类来使用。
2. 这个类也是一个抽象类。他不用实现父类中的所有方法,只要选择性的实现一部分方法,或者扩展方法。甚至可以什么也不做。

你这里属于第二种,3个抽象方法里每个子类都只实现1个方法,还有两个方法是抽象的。 这种是带有抽象方法的普通类。。。 这个当然出错了。

解决方法:
1. 把这3个类都写成抽象的。
2. 这3个类都要完全实现A中的3个抽象方法。
爱跳舞的苹果Dx
2012-10-20 · TA获得超过1111个赞
知道小有建树答主
回答量:850
采纳率:0%
帮助的人:751万
展开全部
子类继承父类的同时,也获得了父类的属性和方法,父类里面如果包含抽象方法,那么子类里面同样的会继承父类里面的抽象方法,如果你不对该抽象方法进行重写,那个,子类必须是抽象类,因为里面有抽象方法,你再看看你写的代码与我所说是否违背
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sl362718824
2012-10-20
知道答主
回答量:28
采纳率:0%
帮助的人:3.4万
展开全部
abstract class A
{
public abstract void f(int x);
public abstract void g(int x,int y);
public abstract double h(double x);
}

class B extends A
{
public void f(int x)
{
System.out.println("x");
}
public abstract void g(int x,int y){

};
public abstract double h(double x){

};
}

class C extends A
{
public void f(int x)
{

}
public abstract void g(int x,int y){
System.out.println("x+y");
};
public abstract double h(double x){

};
}

class D extends A
{
public void f(int x){

}
public abstract void g(int x,int y){

};
public abstract double h(double x){
return Math.sqrt(x);
};
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tiandesgin
2012-10-20 · TA获得超过169个赞
知道小有建树答主
回答量:357
采纳率:100%
帮助的人:259万
展开全部
如果你继承的父类是抽象类,本身这个类不是抽象类,那么你就要实现父类中所有的抽象方法!! 已经提示很明显了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式