C#实现面向对象多态性的三种方式
2013-05-30 08:54
351 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
//实现面向对象多态性的有三种方式
//虚方法
//抽象类
//接口
//抽象类:是对一系列类的抽象
abstract class Human
{
string name;
public string Name
{
get { return name; }
set { name = value; }
}
//5.属性也可以定义为抽象的,属性本身也是方法
public abstract string num { get; set; }
public void Say()
{
Console.WriteLine("human say...0");
}
//public virtual void Walk()
//{
//}
//2.抽象方法不能有方法体
//3.抽象方法只能写在抽象类里
public abstract void Walk();
public abstract void Work();
}
//4.非抽象类继承抽象类时,抽象类中的所有抽象方法必须实现
class Student:Human
{
string stunum = "";
DateTime dt = DateTime.Now;
public override string num
{
get
{
return stunum;
}
set
{
stunum = value;
}
}
public override void Walk()
{
Console.WriteLine("student walk..");
}
public override void Work()
{
Console.WriteLine("{0}学生在学习",dt);
}
}
class Teacher : Human
{
DateTime dt = DateTime.Now;
public override void Work()
{
Console.WriteLine("{0}老师在教书",dt);
}
string tnum = "";
public override string num
{
get
{
return tnum;
}
set
{
tnum = value;
}
}
public override void Walk()
{
Console.WriteLine("teacher walk`````");
}
}
class Program
{
static void Main(string[] args)
{
//1.抽象类不能直接实例化
Human h = new Student();
h.Walk();
h = new Teacher();
h.Walk();
Human a = new Student();
a.Work();
a = new Teacher();
a.Work();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
//实现面向对象多态性的有三种方式
//虚方法
//抽象类
//接口
//抽象类:是对一系列类的抽象
abstract class Human
{
string name;
public string Name
{
get { return name; }
set { name = value; }
}
//5.属性也可以定义为抽象的,属性本身也是方法
public abstract string num { get; set; }
public void Say()
{
Console.WriteLine("human say...0");
}
//public virtual void Walk()
//{
//}
//2.抽象方法不能有方法体
//3.抽象方法只能写在抽象类里
public abstract void Walk();
public abstract void Work();
}
//4.非抽象类继承抽象类时,抽象类中的所有抽象方法必须实现
class Student:Human
{
string stunum = "";
DateTime dt = DateTime.Now;
public override string num
{
get
{
return stunum;
}
set
{
stunum = value;
}
}
public override void Walk()
{
Console.WriteLine("student walk..");
}
public override void Work()
{
Console.WriteLine("{0}学生在学习",dt);
}
}
class Teacher : Human
{
DateTime dt = DateTime.Now;
public override void Work()
{
Console.WriteLine("{0}老师在教书",dt);
}
string tnum = "";
public override string num
{
get
{
return tnum;
}
set
{
tnum = value;
}
}
public override void Walk()
{
Console.WriteLine("teacher walk`````");
}
}
class Program
{
static void Main(string[] args)
{
//1.抽象类不能直接实例化
Human h = new Student();
h.Walk();
h = new Teacher();
h.Walk();
Human a = new Student();
a.Work();
a = new Teacher();
a.Work();
}
}
}
相关文章推荐
- C#实现的三种方式实现模拟键盘按键
- C#实现的三种方式实现模拟键盘按键
- C#三种WCF网络客户端的实现方式
- C#实现启用、禁用本地网络的三种方式
- C#三种WCF网络客户端的实现方式
- C#实现启用、禁用本地网络的三种方式
- C#实现启用、禁用本地网络的三种方式
- c# list排序的三种实现方式
- C#接口的三种实现方式
- C#CreateGraphics方法的三种实现方式
- C#接口的三种实现方式
- c# list排序的三种实现方式 (转帖)
- C# 三种实现抖屏的方式
- [转]C#实现的三种方式实现模拟键盘按键
- c# list排序的三种实现方式
- 三种C#实现数组反转方式
- 详解三种C#实现数组反转方式
- c# list排序的三种实现方式
- C#中实现程序开机自启动 三种方式
- JavaScript面向对象(三)——继承与闭包、JS实现继承的三种方式