C#-面向对象的多态思想 ---ShinePans


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

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

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);
            }
        }
    }
}

时间: 2024-09-29 18:52:03

C#-面向对象的多态思想 ---ShinePans的相关文章

如何培养面向对象的编程思想(转)

1.什么是面向对象? 面向对象是专指在程序设计中采用封装,继承,多态和抽象的设计方法.面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分.这些程序设计语言可分为以下几类:系统中一切事物皆为对象:对象是属性及其操作的封装体:对象可按其性质分类,对象成为类的实例:实例关系和继承关系是对象之间的静态关系:消息传递是对象之间动态联系的唯一方式,也是计算的唯一形式:方法是消息的序列. 2.如何理解面向对象? 从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内

面向对象的核心思想

个人觉得面向对象的核心思想的重点,是当我们面向一个对象(事或物)时,应该思考该对象的数据构成方式以及该对象与其他对象之间的互动模式. 面向对象其实是一个对问题对象的数据构成方式的新思想,由最原始的数据类型(整形.字符串.浮点型等) → 数组(线性) → 多维数组 → 集合(C#中的ArrayList) → 哈希表 → 类及实例化(类的属性.索引器) → 类的继承,体现了面向对象的数据构成的复合性.对于那些对象的多态.反射.重用等功能,我觉得这些都是为类及实例化能完成更复杂的对象与场景之间的关系进

如何培养面向对象的编程思想

1.什么是面向对象? 面向对象是专指在程序设计中采用封装,继承,多态和抽象的设计方法.面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分.这些程序设计语言可分为以下几类:系统中一切事物皆为对象:对象是属性及其操作的封装体:对象可按其性质分类,对象成为类的实例:实例关系和继承关系是对象之间的静态关系:消息传递是对象之间动态联系的唯一方式,也是计算的唯一形式:方法是消息的序列. 2.如何理解面向对象? 从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内

面向对象编程 多态

面向对象编程 -多态 对象的多态性是指在父类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为.这使得同一个属性或行为在父类及其各个子类中具有不同的语义. 多态这个概念,在 Java 中指的是变量可以指向的对象的类型,可是变量声明类型的子类.对象一旦创建,它的类型是不变的,多态的是变量. 在 PHP5 中,变量的类型是不确定的,一个变量可以指向任何类型的数值.字符串.对象.资源等.我们无法说 PHP5 中多态的是变量. 我们只能说在 PHP5 中,多态应用在方法参数的类型

面向对象之多态

面向对象之多态: 由于子类重写父类方法,然后用父类引用指向子类对象,调用方法时候会进行动态绑定,这就是多态 面向对象编程之接口: 接口(interface)是抽象方法和静态常量定义的集合. 接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量. 接口中没有其它类型的内容 接口的定义 interface 接口名{ public getName(); public setName($name);}在接口中的抽象方法只能是 public 的,默认也是 public 权限.并且不能设置成 pri

面向对象的设计思想

博主之间是做 Linux  C++ 软件开发的,深刻地领悟到了面向对象的设计思想.但新的工作岗位是做嵌入式开发的,用的是C语言,突然有一点不太习惯. C语言是一种面向过程的语言,它本身不像C++具备面向对象的功能,但是这不等于说C就不能写出面向对象的软件. 博主看过许多比较出名的开源软件,如:dbus, avahi, cunit,虽然它们都是用C语言来实现的,但它们都融入了面向对象的设计思想,到处都是面对象的影子. dbus 中的 DBusString 对象就类似于 C++中的 std::str

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

C++的面向对象的编程思想如下,一般情况为一个类中包含了这个对象的所有属性与函数,直接调用这个对象就可以对这个对象执行它可以使用的任何操作. #include <iostream> class Robot { public: Robot() :Battery(100){}//构造一个机器人的时候让机器人的电量值为满格 void speak();//发言函数 void charge();//充电函数 void function(int i);//选择功能函数 private: unsigned

连载:面向对象葵花宝典:思想、技巧与实践(33) - ISP原则

 ISP,Interface Segregation Principle,中文翻译为"接口隔离原则". 和DIP原则一样,ISP原则也是大名鼎鼎的Martin大师提出来的,他在1996年的C++ Reporter发表" The Interface Segregation Principle"的文章详细阐述了ISP原则,并且在他的经典著作< Agile Software Development, Principles, Patterns>(中文翻译为:敏捷

黑马程序员——Java基础---面向对象之多态

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流!                                                                     面向对象之多态 一:多态的概念  多态性在实际中的含义就是不同的对象有相同的一般轮廓或形态,但具体执行的过程却大相径庭