抽象,密封,多态和继承的例子

一,父类Animal

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test3
{
    public abstract class Animal
    {
        //获得声音的方法
        public virtual string GetShoutSound()
        {
            return "";
        }
    }
}

二,子类Cat和Dog

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test3
{
    public class Dog : Animal
    {
        public override string GetShoutSound()
        {
            return "旺旺旺旺!!!!!";
        }
    }
}

子类二

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test3
{
    public class Cat : Animal
    {
        //重写抽象方法中的,虚方法
        public override string GetShoutSound()
        {
            return "喵喵喵喵!!!!!";
        }
    }
}

 

 

三,密封功能类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test3
{
    //密封Dog的speak功能,密封类不可以被继承
    sealed class Speak : Dog
    {
        public string DogSpeak()
        {
            return this.GetShoutSound();
        }
    }
}

 

 

四,输出:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test3
{
    class Program
    {
        static void Main(string[] args)
        {
            Animal animal1 = new Dog();
            Animal animal2 = new Cat();
            Speak speak = new Speak();
            string a1 = animal1.GetShoutSound();
            string a2 = animal2.GetShoutSound();
            string a3 = speak.DogSpeak();    //实现密封的功能
            Console.WriteLine(a1 + a2 + "密封功能实现:" + a3);
        }
    }
}

 

posted @ 2016-09-02 22:18  叶丶梓轩  阅读(197)  评论(0编辑  收藏  举报