黑马程序员技术交流社区
标题: 抽象方法和抽象类 [打印本页]
作者: 如远行客 时间: 2013-12-17 22:51
标题: 抽象方法和抽象类
本帖最后由 如远行客 于 2013-12-17 22:55 编辑
抽象类和抽象方法
在声明中使用abstract关键字修饰的类称为抽象类,抽象类具有以下特点:
◆ 抽象类不能实例化。
◆ 抽象类可以包含抽象方法和抽象访问器。
◆ 抽象类中可以存在非抽象成员
◆ 从抽象类派生的类,如果是抽象类,可以不实现抽象类中的成员,但是继承到最终的子类时一定要全部实现基类中的抽象成员;如果派生类不是抽象类,则必须实现基类中全部的抽象成员。
◆ 抽象类不能与sealed关键字一起使用,因为抽象类是必须被继承的,而用sealed关键字修饰表示该类不能被继承。
抽象类中可以包含抽象方法。虚方法是需要有实现体的方法,在现实开发过程中,如果不需要实现实现,或者知道怎么去实现这个方法,那么就可以将这个方法定义为抽象方法。
抽象方法具有如下特性:
◆ 抽象方法是隐式的虚方法。
◆ 抽象方法只允许在抽象类中声明。
◆ 抽象类不允许有实现体,在声明抽象方法时,只写出方法名后加一个分号即可,连后面的{ }都不能有。
◆ 在实现抽象方法时,需要使用关键字override。
◆ 在声明抽象方法时不能一起使用static或virtual关键字。
◆ 抽象方法也不能是私有的,否则无法在子类中实现。
例如:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 抽象类
{
class Program
{
static void Main(string[] args)
{
B b = newB(5, 7);
int sum= b.fun();
Console.WriteLine("运行实现的抽象函数得到结果: {0}",sum);
Console.ReadKey();
}
}
abstract class A //声明抽象类
{
public abstract int fun(); //声明抽象方法
}
class B : A
{
int x, y;
public B(int x1,int y1)
{
x=x1;
y=y1;
}
public override int fun() //抽象方法的实现
{
return x + y;
}
}
}
程序运行结果如下:
-
抽象方法.PNG
(22.09 KB, 下载次数: 14)
作者: 许庭洲 时间: 2013-12-18 08:19
值得学习ing!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |