小例子大智慧2--C#中的多态Polymorphism
来源:互联网 发布:mac输入法切换中文 编辑:程序博客网 时间:2024/04/29 21:42
以上篇的实体类型为引子,我就直接贴过来了:
Person实例类型:
public class Person
{
public string Name;
public string Sex;
public int Age;
//构造函数,初始化
public Person()
{
this.Name = "张三";
this.Sex = "男";
this.Age = 30;
}
public string SayHi()
{
return "Hell!How are you?";
}
//virtual修饰符进行修饰来启用多态
public virtual string Hello()
{
return "Hell!How are you?";
}
}
加了一个Hello方法,并且看到有个字符去修饰,目的就是为了实现重写
Student实例类型:
public class Student : Person
{
public int CJ;
//构造函数,初始化
public Student()
{
this.CJ = 90;
}
public string SayHi()//使用new有意隐藏基类方法
{
return "你好啊!....";
}
public override string Hello()//重写
{
return "你好啊!....";
}
}
override重写hello方法,实现多态
页面aspx页面的设计
<body>
<form id="form1" runat="server">
<div>
不用重写多态:<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />
重写多态:<br />
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
后台.cs文件中代码
protected void Page_Load(object sender, EventArgs e)
{
//不用重写多态
Person[] p = new Person[2];
p[0] = new Person();
p[1] = new Student();
foreach (var l in p)
{
if (l is Student)
{
Student s = l as Student;
Label1.Text = s.SayHi();
}
else if (l is Person)
{
Person t = l as Person;
Label2.Text = t.SayHi();
}
}
//重写多态
Person[] persons = new Person[2];
persons[0] = new Person();
persons[1] = new Student();
int index = 0;
foreach (var z in persons)
{
++index;
if (index == 1)
{
Label3.Text = z.Hello();
}
else
{
Label4.Text = z.Hello();
}
}
}
如果不用重写实现多态的话,第一种方法如果加一个实例类怎么办?
第二种能很好的体现出来,不用区分。
页面显示结果:
不用重写多态:
你好啊!....
Hell!How are you?
重写多态:
Hell!How are you?
你好啊!....
- 小例子大智慧2--C#中的多态Polymorphism
- 小例子大智慧1---C#继承,构造函数
- 小郁闷中的大智慧
- 小例子大智慧4--委托Delegate
- 小例子大智慧5--事件Event
- java 中的多态polymorphism
- Polymorphism in JavaScript(javascript中的多态)
- java中的多态(Polymorphism)
- 面向对象编程中的多态(polymorphism)
- 小动物大智慧
- 小故事大智慧
- 小问题,大智慧
- 小故事大智慧
- 小幽默大智慧
- 小故事大智慧
- 小常识,大智慧
- 小知识,大智慧!
- 小问题大智慧
- ubuntu12 androd4.2源码下载
- 6.3
- poj 2342 anniversary party(树形dp入门)
- Asp.net给图片加水印
- DB2—alter追加/删除/重置column操作整理
- 小例子大智慧2--C#中的多态Polymorphism
- jQuery中的常见操作(8)
- iphone开发笔记
- OpenStack建立实例完整过程源码详细分析(12)----依据AMQP通信架构实现消息发送机制解析之一
- grep一个文件时,报错“Binary file ... matches”
- 从jar中读取所有的class
- JavaScript 的性能优化:加载和执行
- 二分搜索错误情况的分析
- 改善记忆力的10个技巧