以下是MSDN上的解释
abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int x, y;
// Not providing an Area method results
// in a compile-time error.
public override int Area()
{
return x * y;
}
}问题是:
在其他地方看到有句这样的说明:“派生类继承抽象类时,它必须实现基类中的所有抽象方法。否则,派生类也必须指定为abstract类型。因此,一直继承abstract属直到获得完整的实现。”
1.上面“否则”之后的话语是否正确?
2.若是正确的能否用MSDN上的例子接着举例再仔细说明一下(既当Square类不实现Area()而是再写一个继承自Square类的SquareTwo类在后者中再实现Area())Square类又该如何写呢?谢谢!
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
//此处如何写Area()?
}
class SquareTwo : Shapes
{
int x, y; public override int Area()
{
return x * y;
}
}
abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int x, y;
// Not providing an Area method results
// in a compile-time error.
public override int Area()
{
return x * y;
}
}问题是:
在其他地方看到有句这样的说明:“派生类继承抽象类时,它必须实现基类中的所有抽象方法。否则,派生类也必须指定为abstract类型。因此,一直继承abstract属直到获得完整的实现。”
1.上面“否则”之后的话语是否正确?
2.若是正确的能否用MSDN上的例子接着举例再仔细说明一下(既当Square类不实现Area()而是再写一个继承自Square类的SquareTwo类在后者中再实现Area())Square类又该如何写呢?谢谢!
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
//此处如何写Area()?
}
class SquareTwo : Shapes
{
int x, y; public override int Area()
{
return x * y;
}
}
解决方案 »
- C#退出调试很卡
- 请教个三层架构的查询语句问题!高人进来看看
- 进度标签 winform
- 如何将16进制的转换成汉字啊 急急急!!请好心人帮忙
- 远程处理配置失败,异常为“RemotingException: 试图重定向类型“MySC.MyComponent, MyServiceComponent”的激活,而该类型已被重定向
- 有趣的其他进制问题
- C# ADO.NET如何做 嵌套事务???急!!!
- .net(c#)分页问题
- progressbar的问题
- 用Process运行一个Dos命令(比如net),总是有一个Dos窗口闪一下,我要它停住不动。
- 多线程时如何轮换使用某个集合中的值
- c# 实现批量修改Excel文件中的字体
1,“否则”后面那段话绝对正确
2,凡是继承了ShapesClass 里未实现的方法都要重新去实现它里面的方法,如果ShapesClass 里面的方法已经实现了就没必要再去实现。
3如果SquareTwo继承的是Square 就没必要再去实现Area()里 到g.cn搜索关于抽象类和接口例子一大把
{
//此处如何写Area()?
}
----------------------
一定要重写Area方法,就是:public override int Area()
{
return XXX;
}
这里的否则指的是派生类而非基类,我现在遇到的问题是,照上面这段话的理解在下面的程序中
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
//此处如何写Area()?
}
class SquareTwo : Shapes
{
int x, y; public override int Area()
{
return x * y;
}
} Square类是否必须实现Area()?若要是必须实现的话 “否则,派生类也必须指定为abstract类型。因此,一直继承abstract属直到获得完整的实现”就不正确了,派生类指定abstract时该如何写?既
abstract class ShapesClass
{
abstract public int Area();
}
abstract class Square : ShapesClass
{
//此处如何写Area()?是依旧为 “abstract public int Area(); ”?
//还是必须像下面的SquareTwo类一样去实现它?
}
class SquareTwo : Shapes
{
int x, y; public override int Area()
{
return x * y;
}
}
如果 Square 为一般类,public override int Area();
你也可以同样把Area()方法定义为抽象方法,abstract public override int Area();
Square必须被声明为抽象类:abstract class Square
{
abstract public int Area();
}
class Square : ShapesClass
{
abstract public int Area(); //这里你只要没有重写ShapesClass类的抽象方法, abstract public int hright(); 那么 Square类就要定义为抽象,你还可以定义其他的
//此处如何写Area()? 方法.也可以使抽象方法
public int Width()
{
}
}
class SquareTwo : Shapes
{
int x, y; public override int Area()
{
return x * y;
}
}