面向对象 多态

Posted 小飛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象 多态相关的知识,希望对你有一定的参考价值。

多态:
有了继承,才有了多态;
概念:继承同一个父类的全部子类,使用起来都不一样,他们都是一个独立的个体;

普通父类中,可以出现虚方法,虚方法可以在子类中被重写;

虚方法:virtual  ,跟在访问修饰符后面使用
重写:override,跟在访问修饰符后面使用

父类,基类
子类,派生类,超类
注:子类还可以添加子类继承这个子类,比如子类A继承了父类B,还可以再添加一个子类c来继承A,

这样C就继承了子类A中的所有

 

创建一个项目,并添加三个类,一个父类,两个子类

父类:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 面向对象__多态
{
    class ren
    {
        public virtual void rr() //在ren这个类中添加使用方法,添加了虚方法,在子类继承后可以被重写
        {
            Console.WriteLine("我爱吃肉、蔬菜和水果");
        }
        //普通父类中,可以出现虚方法,虚方法可以在子类中被重写;

       //虚方法:virtual,在上面访问修饰符后面添加这个方法
       //重写:override
} }

 

子类1:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 面向对象__多态
{
    class nan:ren //nan继承了ren这个类,
    //在父类中有可以被重写的虚方法,在子类中可以进行重写,在访问修饰符后面加override
    {
        public override void rr()//作为一个子类,他和其他子类一样继承父类,他也同样有自己的使用方法
                                 //每一个子类都是一个独立的个体
        {
            Console.WriteLine("我是男人,我爱吃肉");
        }
        //子类中也可以有单独自己的方法
public void sport()
{
Console.WriteLine("我是男人,我喜欢运动");
}

} }

 

子类2:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 面向对象__多态
{
    class nv:ren //nv继承了ren这个类
    {
        //在父类中有可以被重写的虚方法,在子类中可以进行重写,在访问修饰符后面加override
        public override void rr()//作为一个子类,他和其他子类一样继承父类,他也同样有自己的使用方法
        //每一个子类都是一个独立的个体
        {
            Console.WriteLine("我是女人,我爱吃蔬菜和水果");
        }
       //子类中也可以有单独自己的方法
public void shop()
{
Console.WriteLine("我是女人,我喜欢购物");
}
} }

Program:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 面向对象__多态
{
    class Program
    {
        static void Main(string[] args)
        {
            nan n = new nan();//实例化一下
            n.rr();//nan这个类继承了ren这个类,就可以使用里面的信息
            //父类中添加了虚方法,表示在子类中可以被重写,现在每个子类中重写了属于自己的属性,
            //在program中调用子类时就会出现每个自己的属性
n.sport();//属于这个子类中自己的属性
nv v = new nv(); v.rr();//nv这个类同样是ren的子类,也可以使用父类里面的 v.shop();//属于这个子类中自己的属性 Console.ReadLine(); } } }

 

以上是关于面向对象 多态的主要内容,如果未能解决你的问题,请参考以下文章

举例说明java面向对象的封装继承多态

设计模式面向对象 - 多态 ( 面向对象 3 要素 | 多态 提升 程序扩展性 | 多态示例 )

JAVA面向对象,继承、封装、多态

15:面向对象三大特性(封装继承多态)之多态

Python面向对象编程之继承与多态详解

.啥是多态?面向对象程序设计为啥要引入多态的特性?使用多态有啥优点?