总结: 多态是面向对象的核心.---------能够理解为一个方法,多种实现,

在这里能够用虚方法,抽象类,接口能够实现多态

1.首先利用接口来实现多态:

接口相当于"功能,"接口能够实现多继承,分为 显式实现接口和隐式实现接口 keyword为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);
}
}
}



代码演示样例:(隐式实现接口)

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)
{
//虚方法:能够被重写 keyword: 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#-面向对象的多态思想 ---ShinePans的更多相关文章

  1. IT第十九天 - 继承、接口、多态、面向对象的编程思想

    IT第十九天 上午 继承 1.一般情况下,子类在继承父类时,会调用父类中的无参构造方法,即默认的构造方法:如果在父类中只写了有参的构造方法,这时如果在子类中继承时,就会出现报错,原因是子类继承父类时无 ...

  2. Java语言中的面向对象特性:封装、继承、多态,面向对象的基本思想(总结得不错)

    Java语言中的面向对象特性(总结得不错) [课前思考] 1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类? 2. 面向对象编程的特性有哪三个?它们各自又有哪些特性? 3. 你知道jav ...

  3. 「MoreThanJava」Day 6:面向对象进阶——多态

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  4. Python_day8_面向对象(多态、成员修饰符、类中特殊方法、对象边缘知识)、异常处理之篇

    一.面向对象之多态 1.多态:简而言子就是多种形态或多种类型 python中不支持多态也用不到多态,多态的概念是应用与java/C#中指定传参的数据类型, java多态传参:必须是传参数的数据类型或传 ...

  5. 黑马程序员_Java面向对象3_多态

    5.面向对象_多态 多态定义:某一种事物存在的多种形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型. 猫 x = new 猫(); 同时猫也是动物的一种,也可以把猫称为动物. 动物 y = n ...

  6. 面向对象的编程思想和Java中类的概念与设计

    面向对象的编程思想学习,面向对象内容的三条主线;1.java类及类的对象2.面向对象的三大特征3.其他关键字学习内容:3.1面向对象与面向过程面向对象与面向过程在应用上的区别 Java中类的概念与设计 ...

  7. Python入门之面向对象的多态和继承

    本章内容 Python面向对象的多态和继承对比 ========================================= 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的 ...

  8. Java面向对象之多态(来源于身边的案例)

    2019年1月3日 星期四 Java面向对象之多态(来源于身边的案例) 1. 为什么要用多态? 1.1 多态是面向对象的三大特性之一 1.2 多态是基于接口设计的模型 1.3 多态具有横向扩展特性 1 ...

  9. C++面向对象的编程思想机器人

    C++的面向对象的编程思想如下,一般情况为一个类中包含了这个对象的所有属性与函数,直接调用这个对象就可以对这个对象执行它可以使用的任何操作. #include <iostream> cla ...

随机推荐

  1. dlmalloc 2.8.6 源代码具体解释(6)

    本文章由vector03原创, 转载请注明出处. 邮箱地址: mmzsmm@163.com, 欢迎来信讨论. 3.4 sys_alloc sys_alloc是dlmalloc中向系统获取内存的主要接口 ...

  2. oracle 打开trace,并分析trace

    SQL> oradebug event 10046 trace name context forever,level 8 ORA-00072: process "Unix proces ...

  3. REQIMPORT-购买内部应用程序(R12.2.3)

     採购内部申请(R12.2.3) --US Program:Requisition Import Short Name:REQIMPORT Application:Purchasing Execu ...

  4. C#使用xpath找到一个节点

    Xpath这是非常强大.但对比是一个更复杂的技术,希望上面去博客园特别想看看一些专业职位.下面是一些简单Xpath的语法和示例,给你参考 <?xml version="1.0" ...

  5. Android组件系列----ContentProvider内容提供商【5】

    2.执行query()方法,查询全部记录(眼下一共两条记录).后台输出效果例如以下: 经測试,其它方法也都是能够运行的. 事实证明,新建的另外一个project文件ContentResolverTes ...

  6. T-SQL开发——ID处理篇

    原文:T-SQL开发--ID处理篇 数据库自增ID功能中Identity.Timestamp.Uniqueidentifier的区别: 问题现象: 一般序号的产生,对于一般程序员而言,都是使用T-SQ ...

  7. 人迹罕至的android要完全退出程序的一种方法

    最近的一个项目,无意中发现了一个方法,使android要完全退出程序的一种方法,遥想当年,以便找到让的有效途径android遇险完全退出程序,我不由得有些感慨. 在这里,不敢独享.和大家分享一下,还启 ...

  8. Windows Phone 独立存储资源管理器工具

    如何使用独立存储资源管理器工具 http://msdn.microsoft.com/zh-CN/library/hh286408(v=vs.92)C:\Program Files (x86)\Micr ...

  9. html 块状元素 行内元素 内联元素

    块状(Block)类型的元素的width默认为100%,而行内(Inline)类型的元素则是根据自身的内容及子元素来决定宽度. 块元素(block element) address - 地址 bloc ...

  10. Java在的时候,类定义HashSet初始化方法

    Java非常多的时间,应使用HashSet搜索功能,类的则定义,是HashSet类型的,我们定义数据成员之后,不好直接调用add函数来实现初始化,这个时候怎么办? 我们能够这样来做: public s ...