您的位置:首页 > 编程语言 > C#

c#面向对象基础 重写、虚方法、抽象类

2015-12-25 16:57 441 查看

虚方法









抽象类与抽象方法

1、书写规范:

在类前面加上abstract关键字,就成为了抽象类;在一个方法前面加上abstract关键字就成为了抽象方法(抽象方法不能有实现方法,直接在后面加分号)

例:

abstract class Fruit  //抽象类
{
public abstract void GrowInArea();   //抽象方法
}


2、抽象类的注意事项:

1)当一个类变为抽象类之后就不能作为对象来使用了,无法new出来

2)抽象方法必须放在抽象类里面(但抽象类中不一定有抽象方法)

3)没有子类的话可以正常运行

4)抽象类里面的方法只能在该类中调用,若在其他类中调用需要通过子类

3、抽象方法的注意事项:

1)抽象方法里面不能写内容(不能创建对象)

2)子类中必须override才能运行

3)有几种抽象方法,就必须在子类中写几种,否则出错

4、在子类中重写抽象基类的方法:

class Apple:Fruit
{
public override void fangfa()
{
Console.WriteLine("tasty!");
}
}


5、在函数中引用抽象类的子类对象:

抽象类 抽象类变量名 = new 继承自此抽象类的具体子类名();

例:

Fruit f = new Apple();
f.fangfa();   //打印结果为tasty!


注意:包含抽象方法的类一定是抽象类,但抽象类中的方法不一定是抽象方法。







接口

  当一个类与多个类之间都存在关系时,单纯用父子关系无法表达出来,为了解决这个问题,引入了接口这个概念,使一个类可以对应多个接口

  接口可以看做一种“纯”的抽象类,它的所有方法都是抽象方法。

1、接口的定义与使用:

用关键字interface定义接口。例:

public iterface Iswim
{
void Swim();
//接口中不能写字段、方法,Swim()相当于抽象方法,需要在继承该接口的类中重写
}
public iterface Ifood
{
void Cook();
}


实现接口可以用与继承相同的语法。例:

1 //定义一个抽象类,使Duck继承自一个抽象类,实现两个接口
2 public abstract class Bird
3 {
4   public abstract void Fly();
5 }
6 public class Duck:Bird,Iswim,Ifood
7 {
8   //实现Iswim接口
9   public void Swim()
10   {
11     Console.WriteLine("swim");
12   }
13   //实现Ifood接口
14   public void Cook()
15   {
16     Console.WriteLine("cook");
17   }
18   //实现抽象类Bird中的抽象方法
19   public override void Fly()
20   {
21     Console.WriteLine("fly");
22   }
23 }


使用接口需要套用公式:接口类型名 变量名 = new 实现了接口的类型名();如:

Duck d = new Duck();
d.Fly();
d.Cook();
d.Swim();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: