一、抽象。
抽象就是虚的东西,也可以说是不存在的东西。
在C#抽象用关键字abstract修饰。用它修饰的类叫抽象类,修饰的方法叫抽象方法。
如:
abstract class Person{ //抽象类
………
public abstract void
Work(); //抽象方法
}
在这里我们应注意:
1.
在一个类中如果有一个方法是抽象方法,那么这个类也必须定义为抽象类。
2.
在一个抽象类中可以没有抽象方法。
3.
抽象的方法不能有方法体(也就是后面那一对大括号)。
4.
在C#中实现抽象方法时也要用关键字override。
5.
抽象类不可以被实例化。
如:
abstract
class Person{ //抽象类
……..
public
abstract void Work();
public
abstract void Print();
public
abstract void Sing();
}
Person person=new Person(); //这句是错误的
6.
子类继承一个抽象类,如果在其内部没有实现父类的所有抽象方法,那么这个子类也必须定义为抽象类。如:
abstract
class Person{
………
public
abstract void Work();
public
abstract void Print();
public
abstract void Sing();
}
abstract
class Man:Person{
public
override void Work()
{
。。。。
}
public
override void Print()
{
。。。。
}
}
二、 接口。
可以说是用关键字interface定义的一种特殊的类。它里面全都是抽象方法。
在JAVA中我们实现接口用关键字implements而在C#中我们还用继承符号即:符号。
JAVA中类是单根继承,接口可以多重实现。在C#中我同样也是这样的概念。所以接口就是为了实现多根继承。
定义接口如:
public interface Person{
void Print(); //这里的public 为默认的,但不可以写出来
void Work();
void Sing();
}
实现接口如:
class Man:Person{
public
void Print() //这里的public 是必须要有的。
{
。。。。
}
public
void Work()
{
。。。。
}
public
void Sing()
{
。。。。。
}
}