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


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;
    using System.Collections.Specialized;
    using System.Threading;
    using Arrayfds;
    using System.Reflection;

    namespace TestArray
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                Animal duck 
    = new Duck("Duck");
                duck.MakeVoice();
                duck.Show();


                Animal dog 
    = new Dog("Dog");
                dog.MakeVoice();
                dog.Show();


                IAction dogAction 
    = new Dog("A big dog");
                dogAction.Move();


                Console.ReadLine();
            }

        }




        
    abstract public class Animal
        {
            
    protected string _name;

            
    public abstract string Name
            {
                
    get;
            }

            
    //声明抽象方法
            public abstract void Show();


            
    public void MakeVoice()
            {
                Console.WriteLine(
    "all animals can make voice");
            }

        }

        
    public interface IAction
        {
            
    //定义公共方法标签
            void Move();
        }


        
    public class Duck : Animal, IAction
        {
            
    public Duck(string name)
            {
                _name 
    = name;
            }

            
    //重载抽象方法
            public override void Show()
            {
                Console.WriteLine(_name 
    + " is showing for you.");
            }

            
    //重载抽象属性
            public override string Name
            {
                
    get { return _name; }
            }

            
    //实现接口方法
            public void Move()
            {
                Console.WriteLine(
    "Duck also can swim.");
            }

        }



        
    public class Dog : Animal, IAction
        {
            
    public Dog(string name)
            {
                
    this._name = name;
            }

            
    public override void Show()
            {

                Console.WriteLine(
    this._name + " is showing for you.");
            }

            
    public override string Name
            {
                
    get { return _name; }
            }


            
    public void Move()
            {
                Console.WriteLine(_name 
    + "also can run ");
            }



        }
       


  • 相关阅读:
    百度地图js lite api 支持点聚合
    看源码积累知识点
    React 16 源码瞎几把解读 【三 点 二】 react中的fiberRoot
    React 16 源码瞎几把解读 【三 点 一】 把react组件对象弄到dom中去(矛头指向fiber,fiber不解读这个过程也不知道)
    React 16 源码瞎几把解读 【二】 react组件的解析过程
    获得BAT技术专家Offer,他到底做了什么?
    Android 日常开发总结的技术经验
    理解Android虚拟机体系结构
    Android开发人员应该选择哪种语言?
    2019年Android岗位BAT等大厂面试题,希望对新的一年的你有所帮助
  • 原文地址:https://www.cnblogs.com/duwamish/p/1513391.html
Copyright © 2011-2022 走看看