码迷,mamicode.com
首页 > Windows程序 > 详细

c# 多态

时间:2016-02-15 21:21:30      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:

实现多态的方法:1.虚方法vartual 2.抽象类、抽象方法 abstract  3.接口 interface。

1、虚方法

//第一步把父类方法加上virtual,可被子类重写   重写后 this.表示重写以后的方法、base.父类中继承下来的方法

public class Person
{
public virtual void Saynation()
{
Console.WriteLine("人");
}
}
public class American : Person
{
//通过用override 重写父类虚方法
public override void Saynation()
{
Console.WriteLine("USA");
}
}
public class Chinese : Person
{

public override void Saynation()
{
Console.WriteLine("CHINA");
}
}
public class Japanese : Person
{
public override void Saynation()
{
Console.WriteLine("JAPAN");
}

}

2、抽象类

//1.可以有实例成员、也可以抽象成员
//2.抽象成员不能有任何实现
// 3.抽象成员必须在抽象类
//4.不能实例化对象,那么抽象类的作用就是用来被继承 主要目的是用来实现多态
//5. 继承以后 必须用overvide 重写 、除非子类也是abstract

abstract class myclas
{

public int Age
{
get;
set;
}
public abstract void SayHi();


}
class myclass1 : myclas
{
public override void SayHi()
{
Console.WriteLine("hao");
}

}

3、接口

//接口是一系列相关的功能的抽象、强制必须实现。

//接口 与抽象类 重用和扩展用继承
//更加关心他有相同的功能--- 接口
//还是关心他的扩展性、重复使用----抽象类

public interface Irunable
{
void run();
}
public interface ISwimable
{
void swim();
}
public interface IRunSwimable : Irunable, ISwimable
{
void change();
}
public class 动物
{

}
public class 陆地动物:动物,Irunable
{
public void run()
{

}
}
public class 豹子:IRunSwimable
{

public void change()
{
throw new NotImplementedException();
}

public void run()
{
throw new NotImplementedException();
}

public void swim()
{
throw new NotImplementedException();
}
}

 

 

 

多态与重载的区别:

重载:
在基类中定义了一个非虚拟函数,然后在派生类中定义一个同名,但是具有不同的参数表的函数,这就是重载。在派生类对象上调用这几个函数时,用不同的参数会调用到不同的函数,有可能会直接调用到基类中的那个。
多态:
在基类中定义了一个虚拟函数,然后在派生类中又定义一个同名,同参数表的函数,这就是多态。多态是这3种情况中唯一采用动态绑定技术的一种情况。也就是说,通过一个基类指针来操作对象,如果对象是基类对象,就会调用基类中的那个函数,如果对象实际是派生类对象,就会调用派声雷中的那个函数,调用哪个函数并不由函数的参数表决定,而是由函数的实际类型决定。

c# 多态

标签:

原文地址:http://www.cnblogs.com/gains/p/5191307.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!