我有下面的代码,我一直得到错误必须有一个正文,因为它没有标记为抽象的extern或部分。
public interface Shape{
int GetArea();
}
public class shape:Shape{
int height;
int width;
int radius;
int GetArea();
}
class Rectangle :Shape{
int height;
int width;
Rectangle(int height,int width){
this.height = height;
this.width = width;
}
int GetArea(){
int area = height*width;
return area;
}
}
答案 0 :(得分:3)
试试这个:
//1. Change interface name from Shape to IShape; to
// be in line with standards and to avoid being
// too close to your original class name, `shape`
public interface IShape {
int GetArea();
}
//2. Change your class from `shape` to `Shape`; again
// to be in line with standards. Also given we
// changed to IShape above, amend the interface name
// here also.
//3. Add keyword `abstract`. Since we don't have a body
// (i.e. a definition) for the GetArea method, we can't
// instantiate it, so it has to be abstract
public abstract class Shape:IShape {
//4. Make our fields protected; since we can't instantiate
// this class there's no point having them here unless
// they're made visible to any classes which inherit from
// this class.
protected int height;
protected int width;
protected int radius;
//5. Since GetArea is required (to implement interface IShape)
// but has no body defined, make it abstract.
public abstract int GetArea();
}
//6. We changed the class from `shape` to `Shape`, so change here also.
//7. You probably also want to make this class & it's constructor public
// though I can't guarentee that (hence commented out)
/* public */ class Rectangle : Shape {
/* public */ Rectangle(int height,int width){
this.height = height;
this.width = width;
}
//8. To implement the interface this method needs to be made public.
//9. You also need to use the `override` keyword to say that this
// replaces the abstract method on the base class (`Shape`)
public override int GetArea() {
int area = height * width;
return area;
}
}
答案 1 :(得分:2)
您应该像这样实施Shape
界面(不要忘记实施中的public
关键字):
public class shape : Shape
{
public int GetArea()
{
return 0;//Return an int value
}
}
class Rectangle : Shape
{
public int GetArea()
{
int area = height * width;
return area;
}
}