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 ");
            }



        }
       


  • 相关阅读:
    重读APUE(7)-link/unlink与mkdir/rmdir
    重读APUE(6)-umask
    社交系统中用户好友关系数据库设计
    修改Web项目的名称后,在TomCat中部署项目,项目的名称还是与原来相同的解决方案
    域名解析TTL是什么意思 TTL值设置为多少合适?
    mysql权限控制—新建用户允许其远程连接
    毕业设计技术方向(转载)
    统一资源定位符URL的组成
    开发中model,entity和pojo的区别
    要不要签三方协议
  • 原文地址:https://www.cnblogs.com/duwamish/p/1513391.html
Copyright © 2011-2022 走看看