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();
    
            }
        }
  • 相关阅读:
    阿里P7架构师是如何解决跨域问题的!你有遇到吗?
    Node.js Express 框架
    用户管理 之 Linux 系统中的超级权限的控制
    [转] Exchange 2013 安装部署详解
    Clustered和Nonclustered Indexes 各自得特点和区别及长短处
    配置IIS5.5/6.0 支持 Silverlight
    redis模块使用
    redis介绍及安装
    linux上安装redis、远程配置及开机启动
    远程连接linux、配置SSHD
  • 原文地址:https://www.cnblogs.com/liuyudong0825/p/4836996.html
Copyright © 2011-2022 走看看