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

C#学习第四弹之封装、继承和多态

2015-04-05 16:59 423 查看
OOP的三大支柱:(1)封装 (2) 继承 (3)多态

C#中的封装,这里说明一下静态类和属性。

静态类:静态的类,不能实例化,而且是密闭的,不能从它派生类型,也无构造方法。

静态类的作用:由于C#中不允许有全局方法,而有时候却恰恰需要一些工具类来实现一些比如数学计算的事情,这个时候静态类便派上了用场。

属性及其作用:罗凯老师在Java课上对属性的解释是“Property: something that holds data“。一般而言,客户希望在不使用方法的情况下访问对象的状态;但是类的设计者却想将类的状态隐藏在类成员中而让客户只能通过方法间接访问对象的状态。而属性满足了这两个目的: (1)为客户提供简单的“类似成员变量”的接口(2)同时为设计者提供了“使用方法来实现”的OO设计所必须的数据隐藏性。

属性写法如下:

using System;

class MyClass
{
public int property;
public int Property
{
get { return this.property; }
set { this.property = value; }
}
static void Main(string[] args)
{
MyClass Object = new MyClass();
Object.Property = 5;
Console.WriteLine(Object.Property);
}
}


继承和多态总是分不开。

和C++一样,在C#中需要实现多态的函数需要声明virtual,且在派生类中需要声明override。

using System;

public class A
{
public virtual void Dance()
{
Console.WriteLine("A can dance");
}
}

public class B: A
{
public override void Dance()
{
Console.WriteLine("B can dance");
}
}

public class C: B
{
public new virtual void Dance()
{
Console.WriteLine("C can dance");
}
}

public class D: C
{
public override void Dance()
{
Console.WriteLine("D can dance");
}
}

class Test
{
static void Main(string[] args)
{
A a = new D();
A b = new B();
C c = new D();
A d = new A();
a.Dance();
b.Dance();
c.Dance();
d.Dance();
}
}


View Code
输出结果应该是:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: