C#-面向对象的多态思想 ---ShinePans
2014-04-22 23:42
267 查看
总结: 多态是面向对象的核心.---------可以理解为一个方法,多种实现, 在这里可以用虚方法,抽象类,接口可以实现多态 |
接口相当于"功能,"接口可以实现多继承,分为 显式实现接口和隐式实现接口 关键字为interface |
interface 接口名
{
string ......
int ....
void 方法名(); //定义方法
}
代码示例:(显示实现接口)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Interface_test { class Program { static void Main(string[] args) { Car c = new Car(); c.Color = "黑色"; c.Run(); c.Stop(); System.Console.ReadLine(); } } interface Icar { void Run(); void Stop(); } interface ICarColor { string Color { get; set; } } class Car:Icar,ICarColor //定义Car类并继承了多个接口 { private string color; public string Color { get { return color; } set { color = value; } } public void Run() //实现接口方法 { System.Console.WriteLine("{0}汽车启动!", color); } public void Stop() { System.Console.WriteLine("{0}汽车停下!", color); } } }
[b]代码示例:(隐式实现接口)
[/b]
class program
{
static void Main()
{
Car c=new Car();
c.show(); //调用Car的show();
Icar ic=c;
//将Car 转换为 Icar接口
ic.show()
System.Console.ReadLine();
}
interface
Icar
{
void show();
}
class Car:ICar
{
public void show()
{
System.Console.WriteLine("执行show()");
}
}
}
2.其次利用抽象类实现多态:
抽象类是不具体的,定义方法时只需要定义抽象方法,抽象类不能实例化
格式:
public abstract class类名
{
public string Name; //定义字段
public void show()
{
} //定义方法
public abstract string Color { get;set} //定义抽象属性
public abstract void Run(); //定义抽象方法
public abstrat void Stop();
}
代码示例:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Abstract_test { class Program { static void Main(string[] args) { Car c = new BMW(); c.Name = "宝马"; c.Color = "红色"; c.show(); c.Run(); c.Stop(); System.Console.ReadLine(); } } public abstract class Car { public string Name; public void show() { System.Console.WriteLine("show方法:这是一辆"+Name); } public abstract string Color { get; set; } //定义抽象属性 public abstract void Run(); public abstract void Stop(); } public class BMW :Car { private string color; public override string Color { get { return color; } set { color=value; } } public override void Run() //实现抽象类的抽象方法 { System.Console.WriteLine("实现Run()方法:{0}{1}启动", color, Name); } public override void Stop() { System.Console.WriteLine("实现Stop()方法:{0}{1}停止", color, Name); } } }
抽象类总结: 抽象类中可以写方法,也可以定义抽象方法,在实现这个抽象类的类时,抽象方法需要实现
3.最后可以利用虚方法来实现
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Virtual_Test { class Program { static void Main(string[] args) { //虚方法:可以被重写 关键字: virtual //定义方式 public virtual string GetStrig(string name) //{ return name +"您好"; } //利用override重写虚方法 Car c = new Car(); c.Name = "BMW"; c.run(); NewCar n = new NewCar(); n.Name = "BMW"; n.run(); Console.ReadLine(); } class Car { private string name; public string Name { get { return name; } set { name = value.Length > 0 ? value : name; } } public virtual void run() { Console.WriteLine("{0}汽车跑起来", name); } } class NewCar:Car //NewCar 继承自Car { public override void run() //重写虚方法 { Console.WriteLine("新的{0}汽车跑起来", Name); } } } }
相关文章推荐
- 面向对象三大特性 之 多态(C#)
- C#基础第七天-作业-利用面向对象的思想去实现名片-动态添加
- java中面向对象三大思想(继承、封装、多态)简单应用
- C# 面向对象三大特性:封装、继承、多态
- C#基础第七天-作业答案-利用面向对象的思想去实现名片-动态添加
- 一步一步C#——2 概念性问题:类、对象、继承、多态、面向对象
- 黑马程序员——C#面向对象之多态
- IT第十九天 - 继承、接口、多态、面向对象的编程思想
- 面向对象的分析设计程序思想通过封装、继承、多态将程序耦合度降低,使程序更加灵活、容易修改和易于复用。
- C#面向对象(三)接口实现多态
- 2、C#面向对象:封装、继承、多态、String、集合、文件(上)
- C#面向对象(三)多态
- C# 面向对象之多态
- 实验报告5——C#面向对象进阶(继承与多态)
- C# 面向对象:封装、继承、多态
- 3、C#面向对象:封装、继承、多态、String、集合、文件(下)
- C# 面向对象的思想
- C#基础第六天-作业-利用面向对象的思想去实现名片
- C语言实现面向对象的思想(实现封装、继承和多态)
- Python3 与 C# 面向对象之~继承与多态