`

C# 的面向对象特性之继承 还有多态

 
阅读更多
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// C# 的继承是为实现创建一个新类,同时重用,扩展,修改已有的另一个类里的一种方式。
/// 同时它应该遵循 Is-A 原则。还重点介绍了实现继承的几个关键字。
/// override 与 new 的区别
/// </summary>
namespace lesson9
{
    class Program
    {
        static void Main(string[] args)
        {
            Dog dog = new Dog();//实例化的时候先会调用父类的构造函数
            dog.Age = 10;
            dog.Bite();
            dog.GetAge();
            dog.BiteMan();

            Animal oldDog = new Dog();//隐式的类型转换 实例化一个animal 类型的 dog对象
            oldDog.Bite();//overwrite 是重写了父类的方法
            oldDog.BiteMan();//new 出来 子类对父类影藏 父类中的biteman并没有重写
            ((Dog)oldDog).BiteMan();
            Console.ReadLine();
        }
    }

    class Animal{
     public Animal()
        {
            Console.WriteLine("Animal constructor");
        }
    public int Age
    {
        get;
        set;
    }
        public virtual void Bite()//virtual 意思在与继承中可以重写
        {
            Console.WriteLine("Animal bite");
        }

        public virtual void GetAge()
        {
            Console.WriteLine(Age);
        }

        public void BiteMan()
        {
            Console.WriteLine("Animal bite man");
        }


    }

    sealed class Dog:Animal //这里的Dog 前面加了sealed就无法被继承
    {
        public Dog()
        {
            Console.WriteLine("Dog constructor");
        }
        public override void Bite()
        {
            Console.WriteLine("Dog bite");
        }

        public new void BiteMan()//把父类的方法,在子类中影藏
        {
            Console.WriteLine("Dog bite man");
        }
    }


}

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// 1.C#的静态多态 在编译时就已经实现了多态
///2.C#的动态多态 在运行时实现的多态
/// </summary>
namespace lesson10
{
    class Program
    {
        static void Main(string[] args)
        {
            PrintHello();
            PrintHello("world");//这里是方法的多态 重载
            Complex c1 = new Complex();
            Complex c2 = new Complex();
            c1.Number = 2;
            c2.Number = 3;
            Console.WriteLine((c1 + c2).Number);

            Human human1 = new Man();//这里实现了动态的重载
            Human human2 = new Woman();
            human1.CleanRoom();
            human2.CleanRoom();
            Console.WriteLine(c2);
            //some logic
            //Human h=new Human();
            //if(he is man)
            //h.CleanRoomSlowly();
            //else if (h is woman)
            //h.cleanroomqucik();
            //some logic


            Console.ReadLine();
        }

        public static void PrintHello()
        {
            Console.WriteLine("Hello");
        }

        public static void PrintHello(string toWho)
        {
            Console.WriteLine("Hello {0}", toWho);
        }
        //运算符的重载 对加号的重载
        class Complex
        {
            public int Number { get; set; }

            public static Complex operator +(Complex c1, Complex c2)
            {
                Complex c = new Complex();
                c.Number = c1.Number + c2.Number;
                return c;
            }
            //实现了对toString 方法的重写
            public override string ToString()
            {
                return Number.ToString();
            }
        }

        class Human{
    public virtual void CleanRoom()
        {
            Console.WriteLine("Human clean room");
        }
    }

        class Man:Human
        {
            public override void CleanRoom()
            {
                Console.WriteLine("man Clean slowly");
            }
        }

        class Woman : Human
        {
            public override void CleanRoom()
            {
                Console.WriteLine("women Clean quaikly");
            }
        }
}
    

}

 

分享到:
评论

相关推荐

    C#关于继承与多态的简单练习源码

    C#是微软推出的面向对象的程序设计语言,分享的这个资源是关于C#中继承与多态的一个简单使用案例

    C# 一个完整的类 面向对象三大特性 封装 继承 多态 的示例

    C# 一个完整的类 面向对象三大特性 封装 继承 多态 的示例 封装通过私有字段和公共方法来实现对数据的访问控制。 继承通过派生类Student继承自Person类,获得了Person类的所有属性和方法,并在此基础上扩展了自己的...

    金旭亮《C#面向对象程序设计》教案_5:继承、接口与多态

    金旭亮《C#面向对象程序设计》教案_5:继承、接口与多态。此教案在前4讲的基础之上讲解初学者者比较难于理解的“多态”特性。包括一个39页的PDF文档及数个VS2010示例。前几讲的教案请访问...

    C#对象编程之继承多态

    对象编程语言最容易搞混这些概念:重载、多态、虚方法、抽象方法。还有这些关键字abstract/virtual/base/overrid/new应该在什么时候用。 本文档用最精简的文字描述了这些概念的区别,并有源码示例。刚看可能觉得写的...

    C#面向对象的精彩讲解(绝对精辟)

    c#面向对象 面向对象的特性 各种面向对象编程语言相互有别,但都能看到它们对面向对象三大机制的支持,即: “封装、继承、多态”

    C# 面向对象三大特性:封装、继承、多态

    本文主要介绍了面向对象的三大特性:封装、继承、多态,提供了简单的示例供大家参考和理解。

    C#中面向对象编程机制之多态学习笔记

    主要介绍了C#中面向对象编程机制之多态学习笔记,本文总结了个人对多态的理解以及接口多态、继承多态等内容,并给出了代码示例,需要的朋友可以参考下

    C# 面向对象 简单计算器V1

    一个简单的基于C# 面向对象开发的计算器,包括了,继承,多态,设计模式...

    C#做的计算器,利用类的封装继承多态。。

    刚学c#查找资料,用C#做了个计算器,功能不太完善,希望给大家有点提示。

    C#的面向对象 让你一看就忘不了

    C# ASP。NET 面向对象 对象 类 多态 继承 封装 一眼就能看出来 让你彻底理解

    C#面向对象程序设计

    资源中包含类的一些简单知识, 对继承、多态、封装的介绍,构造函数和析构函数介绍...以及一些实例讲解...简单易懂..想学习的可以从基础学起...

    C#课件-C#的面向对象特性1

    面向对象编程 OOP编程的相关技术 OOP的特征:封装、继承和多态 接口

    关于C#面向对象编程

    具体介绍了其用法,方法的定义,重载的定义以及如何使用重载,继承和多态的使用。

    c#继承与多态使用示例

    继承是面向对象程序设计的主要特征之一,允许重用现有类去创建新类的过程。下面使用示例学习一下c#继承与多态

    面向对象贪吃蛇c# .net

    c#贪吃蛇,使用面向对象技术,封装继承和多态。实现了蛇的增长,死亡和运动。重要代码注释详细

    面向对象的小项目[好友管理]

    学习面向对象的设计,序列化等运用,功能齐全,可以学习面向对象继承与多态

    C#学习(apk)

    C#学习是Android客户端目前最全面的免费离线C#学习书籍,从C#入门到C#面向对象编程,提高您对C#的基础理解和全面掌握。主要内容包括: 1、C#变量、数据类型 2、C#面向对象 3、C#封装、继承、多态 4、面向接口编程 5...

    C#学习安卓端

    C#学习是Android客户端目前最全面的免费离线C#学习书籍,从C#入门到C#面向对象编程,提高您对C#的基础理解和全面掌握。主要内容包括: 1、C#变量、数据类型 2、C#面向对象 3、C#封装、继承、多态 4、面向接口编程 5...

Global site tag (gtag.js) - Google Analytics