zoukankan      html  css  js  c++  java
  • 多态、虚方法、重写

    多态:

    同样都是继承了同一个父类,但是父类中的方法并不使用任何一个子类,那么在这就需要子类重新编写这个方法的主体

    1、需要父类同意子类可以重新编写自己的方法,virtual - 虚方法

    2、子类只能重写父类允许重写的方法,只能重写虚方法,override - 重写覆盖虚方法

    所有的类都可以当做父类,都可以有虚方法

    Program   类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 多态_虚方法_重写
    {
        class Program
        {
            static void Main(string[] args)
            {
                bird b = new bird();
                plane p = new plane();
                Console.WriteLine(b.flying());
                Console.WriteLine(p.flying());
    
    
                Class1 c = new Class1();
                Console.WriteLine(c.flying());
                Console.WriteLine(c.eat());
    
    
                Console.ReadLine();
            }
        }
    }

    fly   类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 多态_虚方法_重写
    {
        public class fly
        {
            //public string flying()//这样写的父类被子类继承后有可能不符合所有子类各自的特性,所以要改成虚拟的
            //{
            //    return "我会飞行!";
            //}
            public virtual string flying()//在public后面加上virtual就变成虚拟的,如果不符合个别子类的特性,可以再子类里面进行重写
            {
                return "我会飞行!";
            }
            public virtual string head()
            {
                return "我有头!";
            }
            public virtual string wing()
            {
                return "我有翅膀!";
            }
    
        }
    }

    bird   类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 多态_虚方法_重写
    {
        public class bird:fly
        {
            public override string flying()//override是重写覆盖,打出来后自动提示需要更改的内容,回车自动显示,然后把ruturn的内容改成其他内容即可
            {
                return "我拍拍翅膀就能飞!";
            }
            public virtual string eat()//自己独有的特性也可以被写成虚方法,它派生的类继承后也可以进行重写
            {
                return "我吃小米!";
            }
    
        }
    }

    plan   类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 多态_虚方法_重写
    {
        class plane:fly
        {
            public override string flying()
            {
                return "我喷火就能飞!";
            }
    
        }
    }

    class1   类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 多态_虚方法_重写
    {
        public class Class1 : bird//Class1继承bird这个子类为父类,那么Class1也可以在里面继续重写,最顶端的虚方法可以被下面的派生类无限重写
        {
            public override string flying()
            {
                return "我不拍翅膀也能飞!";
            }
    
            public override string eat()
            {
                return "我吃小米,也吃沙子!";
            }
    
        }
    }
  • 相关阅读:
    NBU7.0 RMAN 异机恢复 not found in NetBackup catalog
    配置Apache支持PHP5
    【浅墨Unity3D Shader编程】之中的一个 夏威夷篇:游戏场景的创建 & 第一个Shader的书写
    关于 rman duplicate from active database 搭建dataguard--系列一
    <html>
    hdu 3622 二分+2-sat
    解决duilib水平布局(HorizontalLayout)中控件位置计算错误的问题
    Android SqlDelight具体解释和Demo样例
    HBase总结(十一)hbase Java API 介绍及使用演示样例
    [置顶] MyEclipse显示中文界面,在线安装教程
  • 原文地址:https://www.cnblogs.com/juyangchao12/p/5859535.html
Copyright © 2011-2022 走看看