zoukankan      html  css  js  c++  java
  • 黑马程序员-接口

    接口

    接口是完全抽象的一种约定。

    接口就是用来实现的。

    语法:

    [访问修饰符] interface 接口名

    {

      //接口成员定义

    }

    接口只有方法、属性、索引和事件的声明

    接口是用来实现的,所有成员默认为public

    interface IWalkable

    {

      //返回类型 方法名(参数列表);

      void Walk();

    }

    interface ISoundable

    {

      void Sound();

    }

        abstract class Animal : IWalkable, ISoundable

        {

            public abstract void Walk();

            public abstract void Sound();

        }

     

        class Person : Animal

        {

            public override void Walk()

            {

                Console.WriteLine("我是一个人,用两只脚在行走中……");

            }

     

            public override void Sound()

            {

                Console.WriteLine("我是一个人,在说话,用到是语言哦");

            }

        }

        class Teacher : Person

        {

            // 老师,没有重写父类方法

        }

        class Student : Person

        {

            public override void Sound()

            {

                Console.WriteLine("我是学生重写的Sound方法");

            }

            //public override void Walk()

            //sealed是密闭的意思,表示从这里开始不允许再被Student的子类重写了

            public sealed override void Walk()

            {

                Console.WriteLine("我是学生重写的Walk方法");

            }

        }

        class Child : Student

        {

            public override void Sound()

            {

                Console.WriteLine("这是小孩的Sound");

            }

            public new void Walk()

            {

                Console.WriteLine("小孩的Walk");

            }

        }

     

        class Cat : Animal

        {

            public override void Walk()

            {

                Console.WriteLine("猫猫走猫步,好迷人……");

            }

     

            public override void Sound()

            {

                Console.WriteLine("喵喵喵……");

            }

        }

        class Car : IWalkable

        {

            public void Walk()

            {

                Console.WriteLine("我是一辆卡车,走在大路上……");

            }

        }

        class Radio : ISoundable

        {

            public void Sound()

            {

                Console.WriteLine("小喇叭,有开始广播啦!!!");

            }

        }

     

        class Program

        {

            static void Main(string[] args)

            {

                IWalkable[] walkObjects = { new Person()

                                          , new Cat()

                                          , new Car()

                                          , new Teacher()

                                          , new Student()

                                          , new Child()};

                for (int i = 0; i < walkObjects.Length; i++)

                {

                    walkObjects[i].Walk();

                }

                object obj = new Child();

                IWalkable iWalk = (IWalkable)obj;

                Child chi = (Child)obj;

                iWalk.Walk();   //我是学生重写的Walk方法

                chi.Walk();     //小孩的Walk

                //new为隐藏 over重写 隐藏看类型 重写只管新爸

                Console.WriteLine(" ---------------------- ");

                ISoundable[] soundObjects = { new Person()

                                            , new Cat()

                                            , new Radio()

                                            , new Teacher()

                                            , new Student()};

                for (int i = 0; i < soundObjects.Length; i++)

                {

                    soundObjects[i].Sound();

                }

     

                Console.ReadKey();

            }

        }

  • 相关阅读:
    PHP递归函数
    php算法
    php 设计模式
    TP5与TP3.X对比
    TP中U配置使用及CRUD
    smarty
    javascript运行机制之执行顺序详解
    让nodeJS支持ES6的词法----babel的安装和使用
    node.js + express 初体验【hello world】
    GIT-查看config配置信息
  • 原文地址:https://www.cnblogs.com/xsj891107/p/3663556.html
Copyright © 2011-2022 走看看