• 多态


    多态:

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

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

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

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

    namespace 多态
    {
    class Program
    {
    static void Main(string[] args)
    {
    Bird b = new Bird();
    Plane p = new Plane();


    Class1 c1 = new Class1();
    Class1 c2 = new Class1();
    Console.WriteLine(b.Flying());
    Console.WriteLine(p.Flying());
    Console.WriteLine(c1.Flying());
    Console.WriteLine(c2.Eat());

    Console.ReadLine();
    }

    namespace 多态
    {
    public class Fly
    {
    public virtual string Flying()
    {
    return "我会飞行";
    }

    public virtual string Head()
    {
    return "我有头";
    }

    public virtual string Wing()
    {
    return "我有翅膀 ";
    }

    namespace 多态
    {
    public class Bird:Fly
    {

    public override string Flying()
    {
    return "拍拍翅膀就能飞";
    }

    public virtual string Eat()
    {
    return "吃小米";
    }

    }
    }

    namespace 多态
    {
    public class Plane:Fly
    {
    public override string Flying()
    {
    return"我喷火就能飞";
    }
    }
    }

    namespace 多态
    {
    public class Class1:Bird
    {
    public override string Flying()
    {
    return"飞一个";
    }

    public override string Eat()
    {
    return "我想当爹";
    }

    -------------------------------------------------------------------------------------

    抽象类:abstract
    它就是为了被继承而出现的

    普通的类中所有的方法都变成虚方法,没有人用最基础的方法,全部都需要重写,那么就不需要那么费劲把普通类中的方法主体都写完,而是,直接定义成抽象类,并且都写成抽象方法。

    只声明方法的名称和返回类型,具体方法主体是什么,继承过去以后自己去实现。

    抽象方法一定是在抽象类中
    有抽象方法的类,一定是抽象类

    抽象类中不一定只有抽象方法

     

    接口:interface
    就是让类更加完善

    干爹

    都是抽象方法,不能有一点实在东西,全部内容都需要在子类中进行实现

    ------------------------------------------------------------------------------------------------

    namespace ConsoleApplication50
    {
    class Program
    {
    static void Main(string[] args)
    {
    NanRen n = new NanRen();
    n.ChiFan();
    NvRen v = new NvRen();

     

    Console.WriteLine(v.ChiFan());
    Console.WriteLine(n.ChiFan());

    Console.ReadLine();
    }
    }
    }

    public abstract class Ren
    {
    public abstract string ChiFan();

    public abstract string ShuiJiao();

    public virtual string ShuoHua()
    {
    return "我能说话";
    }


    }

    public class NanRen:Ren,GongZuo,YuLe
    {
    public override string ChiFan()
    {
    return "大口吃饭";
    }

    public override string ShuiJiao()
    {
    return "趴着睡";
    }
    public string LOL()
    {
    return "1v5";
    }
    public string PaoBu()
    {
    return "12.88";
    }
    public string JiNeng()
    {
    return "敲代码";
    }
    public string DiDian()
    {
    return "白宫";
    }

    public class NvRen:Ren
    {
    public override string ChiFan()
    {
    return "小口吃饭";
    }

    public override string ShuiJiao()
    {
    return "躺着睡";
    }
    }

    public interface GongZuo
    {
    string JiNeng();

    string DiDian();

    public interface YuLe
    {
    string LOL();

    string PaoBu();

     

    }

     

  • 相关阅读:
    Java 将File转换为MultipartFile类型
    JAVA中实现根据文件路径下载文件
    Java中类似单元格之间的计算公式解析,如A1+B3-B4
    Java JPA通过hql语句查询数据
    mysql与oracle 表字段定义比较
    Java时间日期DateUtil
    fetch缓存问题
    Vue中watch的简单应用
    关于跨域和如何解决跨域问题的小结
    Google play 一直等待下载?解决方案如此简单!
  • 原文地址:https://www.cnblogs.com/power8023/p/5855507.html
Copyright © 2020-2023  润新知