zoukankan      html  css  js  c++  java
  • 抽象类,接口

    子类继承父类的属性值但是父类的属性值并不适合子类的需要,就需要多态。

    子类只能重写(override)父类允许修改的属性,也就是父类中有虚拟属性(virtual)的属性。

    每个类都可以是其他类的子类也可以是其他类的父类。

    bird b = new bird();

                plane p = new plane();

                owl o = new owl();

                Console.WriteLine(b.flying());

                Console.WriteLine(p.flying());

                Console.WriteLine(b.eat());

                Console.WriteLine(o.eat());

                Console.ReadKey();

    public  class fly

        {

            public virtual string flying() { return "i can fly"; }

    }

    public  class bird:fly

        {

            public override string flying()

            {

                return "拍下翅膀就能飞";

            }

            public virtual string eat() { return "要吃东西"; }

        }

    public  class plane:fly

        {

            public override string flying()

            {

                return "有引擎才能飞";

            }

        }

    public  class owl:bird

        {

            public override string eat()

            {

                return "要吃肉";

            }

        }

    Plane跟bird是fly 的子类,分别重写了fly里的flying(),owl是bride的子类,重写了eat()。Bird里的eat 是父类里没有的。

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

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

    抽象方法一定是在抽象类中

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

    抽象类,抽象类就是为了被继承而出现的。当子类中的属性都需要重写时,父类可以写成抽象类。抽象类的关键字是abstract。抽象类不需要明确的和函数体。

    public abstract class ren

        {

            public abstract string shuijiao();

            public abstract string  chifan();

            public virtual string xingwei()

            {

                return "有行为动作";

            }

        }

    接口:interface

    就是让类更加完善

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

    接口的关键字是interface

    public interface yule

        {

            string youxi();

            string dianying ();

           

        }

    不需要class,也是虚方法,返回类型之前的访问修饰符也不用写。所有的在子函数中声明。

    public  class nanren:ren ,yule     {

            public override string chifan()

            {

                return "大口吃饭";

            }

            public override string shuijiao()

            {

                return "在床上睡";

            }

            public string youxi()

            {

                return "lol";

            }

            public  string dianying()

            {

                return "爵迹";

            }

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    namespace 抽象类_接口

    {

        class Program

        {

            static void Main(string[] args)

            {

                nanren n = new nanren();

              

                Console.WriteLine(n.youxi());

                Console.ReadLine ();

            }

        }

    }

  • 相关阅读:
    art.dialog
    Asp.net中web.config配置文件详解
    Web.Config文件配置之限制上传文件大小和时间
    Asp.net中的一个判断session是否合法的做法
    js倒计时
    Asp.net中web.config配置文件详解
    C#调用耗时函数时显示进度条浅探
    ChannelFactory
    NetTcpBinding 类nettcpbinding的属性和方法
    n!的位数 斯特林公式
  • 原文地址:https://www.cnblogs.com/lanrenqilanming/p/5857174.html
Copyright © 2011-2022 走看看