多态

 

多态:

同样都是继承了同一个父类,但是父类中的方法并不使用任何一个子类,那么在这就需要子类重新编写这个方法的主体

1、需要父类同意子类可以重新编写自己的方法
virtual - 虚方法

2、子类只能重写父类允许重写的方法,只能重写虚方法
override - 重写覆盖虚方法

所有的类都可以当做父类,都可以有虚方法

 

namespace 多态
{
class Program
{
static void Main(string[] args)
{
Bird b = new Bird();
Plane p = new Plane();


Class1 c1 = new Class1();
Class1 c2 = new Class1();
Console.WriteLine(b.Flying());
Console.WriteLine(p.Flying());
Console.WriteLine(c1.Flying());
Console.WriteLine(c2.Eat());

 

Console.ReadLine();
}

 

 

namespace 多态
{
public class Fly
{
public virtual string Flying()
{
return "我会飞行";
}

public virtual string Head()
{
return "我有头";
}

public virtual string Wing()
{
return "我有翅膀 ";
}

 

 

namespace 多态
{
public class Bird:Fly
{

public override string Flying()
{
return "拍拍翅膀就能飞";
}

public virtual string Eat()
{
return "吃小米";
}

}
}

 

 

namespace 多态
{
public class Plane:Fly
{
public override string Flying()
{
return"我喷火就能飞";
}
}
}

 

 

namespace 多态
{
public class Class1:Bird
{
public override string Flying()
{
return"飞一个";
}

public override string Eat()
{
return "我想当爹";
}

 

-------------------------------------------------------------------------------------

 

抽象类:abstract
它就是为了被继承而出现的

普通的类中所有的方法都变成虚方法,没有人用最基础的方法,全部都需要重写,那么就不需要那么费劲把普通类中的方法主体都写完,而是,直接定义成抽象类,并且都写成抽象方法。

只声明方法的名称和返回类型,具体方法主体是什么,继承过去以后自己去实现。

抽象方法一定是在抽象类中
有抽象方法的类,一定是抽象类

抽象类中不一定只有抽象方法

 

接口:interface
就是让类更加完善

干爹

都是抽象方法,不能有一点实在东西,全部内容都需要在子类中进行实现

------------------------------------------------------------------------------------------------

namespace ConsoleApplication50
{
class Program
{
static void Main(string[] args)
{
NanRen n = new NanRen();
n.ChiFan();
NvRen v = new NvRen();

 

Console.WriteLine(v.ChiFan());
Console.WriteLine(n.ChiFan());

Console.ReadLine();
}
}
}

 

 

public abstract class Ren
{
public abstract string ChiFan();

public abstract string ShuiJiao();

public virtual string ShuoHua()
{
return "我能说话";
}


}

 

 

public class NanRen:Ren,GongZuo,YuLe
{
public override string ChiFan()
{
return "大口吃饭";
}

public override string ShuiJiao()
{
return "趴着睡";
}
public string LOL()
{
return "1v5";
}
public string PaoBu()
{
return "12.88";
}
public string JiNeng()
{
return "敲代码";
}
public string DiDian()
{
return "白宫";
}

 

 

 

public class NvRen:Ren
{
public override string ChiFan()
{
return "小口吃饭";
}

 

public override string ShuiJiao()
{
return "躺着睡";
}
}

public interface GongZuo
{
string JiNeng();

string DiDian();

 

public interface YuLe
{
string LOL();

string PaoBu();

 

}

 

 

 

 

 

 

 

 

 

posted @ 2016-09-09 15:40  涤荡轮回  阅读(145)  评论(0编辑  收藏  举报