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();
    
            }
        }
  • 相关阅读:
    express和koa,node.js的框架的区别——英文版
    深入javascript系列
    命名函数表达式相关
    闭包与作用域链,思考题目
    iOS开发之身份证号码校验
    iOS8中使用CoreLocation定位[转]
    iOS开发之应用内检测手机锁屏,解锁状态
    iOS8设置应用图标红点的权限问题
    删除已经配置的类库和移除CocoaPods[转]
    如何在Xcode6中添加空模板
  • 原文地址:https://www.cnblogs.com/liuyudong0825/p/4836996.html
Copyright © 2011-2022 走看看