多态:是一种抽象的概念,是一个对象可以有多种表现形式!
而对于多态怎么去实现:
1:重载与隐藏基类
2:抽象类与虚方法 俩者的区别是一个需要去实现,一个不需要自己去实现由子类去实例化
3:接口; 接口是一种约定,对象的特征或行为,对于一个集合体共同的属性或方法;它是用来被实现的,可以直接被当做父类调用,而抽象类只能当做基类,需要对象的实例化去重写才能使用!
抽象类:
namespace 抽象类 //定义一个抽象类
{
abstract class 动物
{
public abstract void animal();
}
}
{
abstract class 动物
{
public abstract void animal();
}
}
namespace 抽象类
{
class 马:动物
{
public override void animal()
{
Console.WriteLine("我是马,好多好多马!");
}
}
}
{
class 马:动物
{
public override void animal()
{
Console.WriteLine("我是马,好多好多马!");
}
}
}
namespace 抽象类
{
class 黑马:马
{
public override void animal()
{
Console.WriteLine("我是黑马重写了马"); ;
}
}
}
{
class 黑马:马
{
public override void animal()
{
Console.WriteLine("我是黑马重写了马"); ;
}
}
}
namespace 抽象类
{
class 白马:马
{
public override void animal()
{
Console.WriteLine("我是白马重写了马"); ;
}
}
}
{
class 白马:马
{
public override void animal()
{
Console.WriteLine("我是白马重写了马"); ;
}
}
}
static void Main(string[] args)
{
动物 animals;
animals = new 马();
animals.animal();
animals = new 白马();
animals.animal();
animals = new 黑马();
animals.animal();
Console.ReadKey();
}
{
动物 animals;
animals = new 马();
animals.animal();
animals = new 白马();
animals.animal();
animals = new 黑马();
animals.animal();
Console.ReadKey();
}
接口:
namespace 接口
{
interface Icall
{
void call();
}
{
interface Icall
{
void call();
}
}
namespace 接口
{
interface Irun
{
void run();
}
}
{
interface Irun
{
void run();
}
}
abstract class car:Icall,Irun
{
public abstract void call();
public abstract void run();
}
{
public abstract void call();
public abstract void run();
}
class maxCar:car
{
public override void call()
{
Console.WriteLine("我很大我会跑很霸气!");
}
public override void run()
{
Console.WriteLine("我很大我还可以放歌!");
}
}
{
public override void call()
{
Console.WriteLine("我很大我会跑很霸气!");
}
public override void run()
{
Console.WriteLine("我很大我还可以放歌!");
}
}
namespace 接口
{
class miniCar:Icall
{
public void call()
{
Console.WriteLine("我是一辆迷你小车");
}
}
}
{
class miniCar:Icall
{
public void call()
{
Console.WriteLine("我是一辆迷你小车");
}
}
}
namespace 接口
{
class person:car
{
public override void call()
{
Console.WriteLine("我是一个人.....");
}
public sealed override void run()
{
Console.WriteLine("我是一个人可以唱歌 不能在重写了"); ;
}
}
}
{
class person:car
{
public override void call()
{
Console.WriteLine("我是一个人.....");
}
public sealed override void run()
{
Console.WriteLine("我是一个人可以唱歌 不能在重写了"); ;
}
}
}
namespace 接口
{
class Program
{
static void Main(string[] args)
{
car[] s ={ new maxCar(),
new person(),
};
miniCar ss = new miniCar();
s[0].call();
s[0].run();
s[1].call();
s[1].run();
ss.call();
Console.ReadKey();
}
}
}
{
class Program
{
static void Main(string[] args)
{
car[] s ={ new maxCar(),
new person(),
};
miniCar ss = new miniCar();
s[0].call();
s[0].run();
s[1].call();
s[1].run();
ss.call();
Console.ReadKey();
}
}
}