继承与多态的锦集

继承

首先我们了解一下继承的作用:移除类的冗余代码

下面是代码展示:

我们先建出一个main函数,一个父类(Exec)和两个子类(PM,CM)

public  class Exec
    {
        public int Id { get; set; }//编号
        public string Name { get; set; }//姓名
        public int Age { get; set; }//年龄

        public Exec()//无参构造
        {
        }
        public Exec(int id,string name,int age)//有参构造
        {
            this.Id = id;
            this.Name = name;
            this.Age = age;
        }
        public void say()//创建say()方法
        {
            Console.WriteLine("我是父类的say方法,我是{0},我{1岁了}");
        }
    }
public class CM:Exec
    {
        public CM()
        {
        }
      
        public CM(int id,string name,int age):base(id,name,age)  //base(id,name,age)调用父类的带参构造
        {       
        }

        public void say()
        {
            Console.WriteLine("我是父类的say方法,我是{0},我{1}岁了", Name, Age);
        }
    }
 public  class PM:Exec
    {
       public PM()
       {
       }

       public PM(int id,string name,int age):base(id,name,age)
       {

       }

       public void say()
       {
           Console.WriteLine("我是父类的say方法,我是{0},我{1}岁了",Name,Age);
       }

    }
class Program
    {
        static void Main(string[] args)
        {
            PM pm = new PM(001,"经理",45);//创建一个经理对象
            pm.say();//调用PM()子类的say()方法
            CM cm = new CM(002,"员工",25);//创建一个员工对象
            cm.say();//调用CM()子类的say()方法
            Console.ReadKey();//让屏幕停留

        }
    }

完成效果图

多态

多态的作用:解决继承带来的问题

我们先通过一段代码来了解一下多态的使用,首先我们要创建出main函数,一个父类(person),三个子类(Korea,Chinese,American)

 public class Person
    {
        public int age;
        public virtual void Hello()
        {

        }
    }
 public class American:Person
    {
       public override void Hello()
       {
           Console.WriteLine("Hello");
       }
    }
public class Chinese:Person
    {
       public override void Hello()
       {
           Console.WriteLine("你好");
       }
    }
public class Korea:Person
    {
       public override void Hello()
       {
           base.age=12;
           Console.WriteLine("金喜善打招呼");
       }
    }
class Program
    {
        static void Main(string[] args)
        {

            Chinese chinese=new Chinese();
            American american=new American();
            Korea korea=new Korea();
        //多态的调用
            Person[] pers=
            {
                chinese,american,korea
            };

            foreach (Person item in pers)//循环遍历
            {
               item.Hello();
            }
            Console.ReadLine();

        }
    }

完成效果图

里面用到的override,与virtal关键字是多态里面的常用方法

virtal关键字修饰方法称为虚方法。虚方法语法如下

语法

访问修饰符 virtual 返回类型 方法名()

{

  //方法体

}

override关键字来修饰的方法,称为方法的重写。虚方法可以被重写。

语法

访问修饰符 override 返回类型 方法名()

{

  //方法名

}

时间: 2024-10-13 01:06:24

继承与多态的锦集的相关文章

网络电视精灵~分析~~~~~~简单工厂模式,继承和多态,解析XML文档

小总结: 所用技术: 01.C/S架构,数据存储在XML文件中 02.简单工厂模式 03.继承和多态 04.解析XML文档技术 05.深入剖析内存中数据的走向 06.TreeView控件的使用 核心:通过该项目,我们对业务流程有一个整体把控.对继承和多态有深入的了解 下面是类图: 主界面图: 核心思路: 1   1.首先在频道管理类ChannelManager中写一个加载所有频道方法LoadAllChannel; 2   3        该方法作用读取FullChannels.xml文件,并且

继承、多态、封装、接口

继承部分 继承(加上封装和多态性)是面向对象的编程的三个主要特性(也称为"支柱")之一. 继承用于创建可重用.扩展和修改在其他类中定义的行为的新类. 其成员被继承的类称为"基类",继承这些成员的类称为"派生类". 派生类只能有一个直接基类. 但是,继承是可传递的. 如果 ClassB 派生出 ClassC,ClassA 派生出 ClassB,则 ClassC 会继承 ClassB 和 ClassA 中声明的成员. 定义一个类从其他类派生时,派生类

2、C#面向对象:封装、继承、多态、String、集合、文件(上)

面向对象封装 一.面向对象概念 面向过程:面向的是完成一件事情的过程,强调的是完成这件事情的动作. 面向对象:找个对象帮你完成这件事情. 二.面向对象封装 把方法进行封装,隐藏实现细节,外部直接调用. 打包,便于管理,为了解决大型项目的维护与管理. 三.什么是类? 将相同的属性和相同方法的对象进行封装,抽象出 “类”,用来确定对象具有的属性和方法. 类.对象关系:人是类,张三是人类的对象. 类是抽象的,对象是具体的.对象可以叫做类的实例,类是不站内存的,对象才占内存. 字段是类的状态,方法是类执

Java的继承与多态

Java的继承与多态对于提高开发效率,减少开发量,是非常有帮助的,也便于代码维护.下面是根据书上讲的,我又做了改进的例子. 假设需求: 公司需要对所有人员进行管理,所有人员分为普通员工和经理人,他们的头衔.工资.生日等信息都是不一样的,但是不能开发两套系统分别进行管理,而是要一套系统完成对所有人的管理. 设计一个员工类,这是父类,定义如下: package com.myHelloWorld; import java.text.ParseException; import java.text.Si

Java 继承、多态与类的复用

摘要: 本文结合Java的类的复用对面向对象两大特征继承和多态进行了全面的介绍. 首先,我们介绍了继承的实质和意义,并探讨了继承,组合和代理在类的复用方面的异同.紧接着,我们依据继承引入了多态.介绍了它的实现机制和详细应用.此外,为了更好地理解继承和多态.我们对final关键字进行了全面的介绍. 在此基础上.我们介绍了Java中类的载入及初始化顺序.最后.我们对面向对象设计中三个十分重要的概念–重载.覆盖与隐藏进行了详细的说明. 要点: 继承 组合,继承,代理 多态 final 关键字 类载入及

JAVA基础——面向对象三大特性:封装、继承、多态

JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据.     隐藏类的实例细节,方便修改和实现. 3.封装的实现步骤 需要注意:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作.当然最好使用get/set方法,比较标准. A.访问修饰符 从表格可以看出从上到下封装性越来越差. B.this关键字 1.this关键字代表当前

Objective-C的封装、继承与多态

面向对象有三大特征:封装.继承和多态. 一.封装 封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问.简而言之,信息隐藏,隐藏对象的实现细节,不让用户看到,以此来增强安全性和简化编程,进而达到封装的目的. 使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员. 访问修饰符:private.protect.public private:私有的,不可供外部访问的信息,只有类本身能存取. prot

【转】C#三大特性之 封装、继承、多态

C#三大特性之 封装.继承.多态 一.封装: 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类).被封装的对象通常被称为抽象数据类型.  封装的意义: 封装的意义在于保护或者防止代码(数据)被我们无意中破坏.在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合的很密切,从而保护它不被其它的函数意外的修改. 封装提供了一个有效的途径来保护数据不被意外的破坏.相比我们将数据(用域来实现)在程序中定义为公用的(public)我们将它们(fie

Objective--C三大特性:封装,继承,多态(杂乱的东西)

OC中类的特性共有有三个,它们分别是封装.多态和继承. 1.成员变量的作用域.成员变量的作用域应该也是封装的一种,它对成员变量的作用范围做出了一些限制. @public : 在任何地方都可以直接访问成员变量. @protected:在本类和子类中可以直接访问. @private:只能在本类中访问. @package:在同一个框架内可以访问. 默认情况下在类的声明中定义的成员变量的修饰符是@protected,在类的实现中定义的成员变量的修饰符是@private. 总结:(1)封装是为了保护类中的