接口和抽象类


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



    }
   


你可能感兴趣的:(抽象类)