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

c#学习笔记——抽象类、抽象方法、抽象属性

2014-08-04 09:52 405 查看
抽象类与抽象方法:

先说些概念的东西:

在一个类前面加上“abstract”关键字,此类就成为了抽象类。 对应的,一个方法类前面加上“abstract”关键字,此方法就成为了抽象方法。

abstract class Fruit //抽象类

{

public abstract void GrowWhere(); //抽象方法

}

注意抽象方法不能有实现代码,在函数名后直接跟一个分号。

抽象类专用于派生出子类,子类必须实现抽象类所声明的抽象方法,否则,子类仍是抽

象类。


好了,说一下我个人的理解吧:抽象类就是定义一个类(里面不止是有方法还有属性,属性等等讲),里面都是些想要被重写的方法(属性),然后方便子类重写,抽象类的抽象方法就不能写实行代码,子类去写。也可以理解,抽象类里的抽象方法(属性)都很抽象,每个子类的实现代码都不一样,这样就方便子类去写,也就不必虚拟和重写了。

还有就是抽象类里的所有抽象方法,子类都要用到。

看个列子吧:

namespace StudyTemp

{

abstract class Fruit

{

public void SayHello()

{

Console.WriteLine("大家好,我是水果!");

}

public abstract void GrowWhere();

}

class Apple : Fruit

{

public override void GrowWhere()

{

Console.WriteLine("南方北方都有我");

}

}

class Banana :
fruit

{

public override void GrowWhere()

{

Console.WriteLine("南方才有我");

}

}

class Program

{

static void Main(string[] args)

{

Fruit f;

f = new Apple();

f.SayHello();

f.GrowWhere();

f = new Banana();

f.SayHello();

f.GrowWhere();

Console.ReadKey();

}

}

}

截图:





这个列子还想说一些细节方面的:

包含抽象方法的类一定是抽象类,但抽象类中的方法不一定是抽象方法。也就是当一个类里有一个方法是抽象方法,那么这个类就是抽象类,但是抽象类里可以有不抽象的方法和属性。就不如上面的SayHello方法。

在调用的时候就应该这样:抽象类 抽象类变量名 = new 继承自此抽象类的具体子类名( );

抽象属性


刚才说了,除了方法可以是抽象的之外,属性也可以是抽象的。

先给个例子吧,也是水果的:

namespace StudyTemp

{

abstract class Fruit

{

public abstract string Name

{

get;

set;

}

public abstract void SayHello();

}

class Apple : Fruit

{

private string name;

public override string Name

{

get

{

return name;

}

set

{

if (value != "小红")

{

this.name = value;

}

else

{

Console.WriteLine("不能用这个名字!");

return;

}

}

}

public override void SayHello()

{

Console.WriteLine("我是苹果{0}",name);

}

}

class Program

{

static void Main(string[] args)

{

Fruit f;

f = new Apple();

f.Name = "小白";

f.SayHello();

Fruit a;

a = new Apple();

a.Name = "小红";

Console.ReadKey();

}

}

}





看到了,我们对属性也进行了重写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐