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

    namespace ConsoleApplication2
    {
    
        abstract class Fruit//抽象类abstract关键字
        {
            public abstract String Message
            {
                get;
                set;
    
            }//抽象属性
            public abstract void GrowInArea();//抽象方法不能有代码实现,在函数名直接跟一个分号。
            public void Say()
            {
                Console.WriteLine("我是水果,你是什么?");
            }
    
        }
        class Apple : Fruit
        {
          
            public string _msg;
            public override string Message
    {
          get 
        { 
            return _msg; 
        }
          set 
        { 
        _msg=value; 
        }
    
    }
            public override void GrowInArea()
            {
                Console.WriteLine(Message);
                Console.WriteLine("我是一个苹果,南方北方都可以种植我");
    
            }
    
    
           
        }
        class Pineapple : Fruit
        {
             public string _message;
             public override string Message
             {
                 get
                 {
                     return _message;
                 }
                 set
                 {
                     _message = value;
                 }
             }
            public override void GrowInArea()
            {
                Console.WriteLine("我是一个菠萝,只能在南方看到我");
            }
    
        }
        //定义两个接口 关键字interface
        //接口可以看成一种“纯”的抽象类,它的所有方法都是抽象方法。
        public interface ISwim//不需要class
        { 
            void Swim();//方法
        }
        public interface IFood
        {
            void Cook();
        }
        //定义一个抽象类
        public abstract class Bird 
        {
            public abstract void Fly();//抽象方法
            public void say()//不一定都是抽象的
            {
                Console.WriteLine("这是一只家鸭");
            }
        }
        //继承一个抽象类,实现两个接口
        public class Duck : Bird, ISwim, IFood
        {  //实现ISwim接口
            public  void Swim()
            {
                Console.WriteLine("鸭子会游泳");
            }
            //实现IFood接口
            public  void Cook()
            {
                Console.WriteLine("北京烤鸭");
            }
            //实现抽象类Bird中的抽象方法
            public override void Fly()
            {
                Console.WriteLine("只有野鸭才会飞");
            }
    
        }
    }
     class Program
        {
            static void Main(string[] args)
            {
                Fruit f;
                f=new Apple();
                f.Message = "Hello";
                f.GrowInArea();
    
    
                f = new Pineapple();
                f.GrowInArea();
                
    
                Duck d = new Duck();
                d.Swim();//调用父类子类接口的任意公有方法
                d.Cook();
                d.say();
                d.Fly();
                Console.ReadLine();
    
            }
        }
  • 相关阅读:
    [计算机网络-传输层] 无连接传输:UDP
    [BinaryTree] 最大堆的类实现
    [OS] 生产者-消费者问题(有限缓冲问题)
    [剑指Offer] 64.滑动窗口的最大值
    [剑指Offer] 63.数据流中的中位数
    [剑指Offer] 62.二叉搜索树的第k个结点
    [OS] CPU调度
    [剑指Offer] 60.把二叉树打印成多行
    MySQL数据库实验二:单表查询
    数据库实验:基本表的定义与修改
  • 原文地址:https://www.cnblogs.com/liuyudong0825/p/4836996.html
Copyright © 2011-2022 走看看