abstract(C#抽象类 参考)
来源:互联网 发布:java实现在线视频播放 编辑:程序博客网 时间:2024/06/07 01:19
abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。
在此例中,类 Square 必须提供 Area 的实现,因为它派生自 ShapesClass:
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int x, y;
public override int Area()
{
return x * y;
}
}
备注
抽象类具有以下特性:
1、抽象类不能实例化。
2、抽象类可以包含抽象方法和抽象访问器。
3、不能用 sealed(C# 参考)修饰符修改抽象类,这意味着抽象类不能被继承。
4、从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。
在方法或属性声明中使用 abstract 修饰符以指示方法或属性不包含实现。
抽象方法具有以下特性:
1、抽象方法是隐式的虚方法。
2、只允许在抽象类中使用抽象方法声明。
3、因为抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。例如:
public abstract void MyMethod();
4、实现由一个重写方法提供,此重写方法是非抽象类的成员。
5、在抽象方法声明中使用 static 或 virtual 修饰符是错误的。
除了在声明和调用语法上不同外,抽象属性的行为与抽象方法一样。
1、在静态属性上使用 abstract 修饰符是错误的。
2、在派生类中,通过包括使用 override 修饰符的属性声明,可以重写抽象的继承属性。
抽象类必须为所有接口成员提供实现。
实现接口的抽象类可以将接口方法映射到抽象方法上。例如:
interface I
{
void M();
}
abstract class C: I
{
public abstract void M();
}
示例
在本例中,DerivedClass 类是从抽象类 BaseClass 派生的。抽象类包含一个抽象方法 AbstractMethod 和两个抽象属性 X 和 Y。
// abstract_keyword.cs
// Abstract Classes
using System;
abstract class BaseClass // Abstract class
{
protected int _x = 100;
protected int _y = 150;
public abstract void AbstractMethod(); // Abstract method
public abstract int X { get; }
public abstract int Y { get; }
}
class DerivedClass : BaseClass
{
public override void AbstractMethod()
{
_x++;
_y++;
}
public override int X // overriding property
{
get
{
return _x + 10;
}
}
public override int Y // overriding property
{
get
{
return _y + 10;
}
}
static void Main()
{
DerivedClass o = new DerivedClass();
o.AbstractMethod();
Console.WriteLine("x = {0}, y = {1}", o.X, o.Y);
}
}
输出
x = 111, y = 161
注释
在上面的示例中,如果试图通过使用下面的语句将抽象类实例化:
BaseClass bc = new BaseClass(); // Error
将出现错误,指出编译器无法创建抽象类“BaseClass”的实例。
- abstract(C#抽象类 参考)
- abstract(C#抽象类 参考)
- 【引用】abstract(C#抽象类参考)
- abstract-抽象(c#参考)
- abstract(C# 参考)
- abstract(C# 参考)
- abstract(C# 参考)
- C#抽象类 abstract
- 抽象类(abstract)
- 抽象类(abstract)
- 抽象类(abstract)
- 抽象(abstract)类
- 抽象类(abstract)
- C# abstract抽象类的作用(使用场景)
- C#抽象类(abstract)与接口
- java抽象类(abstract)
- Java-抽象类(abstract)
- abstract抽象类和abstract抽象方法
- MATLAB 效率再议
- c# enum用法
- C#的Enum——枚举
- C#调用API函数
- Winform实现窗体抖动的效果代码
- abstract(C#抽象类 参考)
- 加删除组件向导里没有iis
- 逻辑右移 C语言
- 全排列算法原理和实现
- 常用的排序算法的时间复杂度和空间复杂度
- 数据结构与算法常见笔试题
- 背包问题
- 计算24点
- 关于幻方的算法