zoukankan      html  css  js  c++  java
  • C#.net技术内幕05面向对象概念

    1.  继承

      类可以从基类继承得到所有的操作、属性、特性、事件以及这些内容的实现方法。但不能继承实例构造函数、析构函数和静态构造函数,也不能继承那些显示拒绝访问的成员。

      继承扩展了基类,并且是可传递的。而且派生类可以声明同样名称或同样签名的新操作,来隐藏继承得到的成员。

    2. 多态性:指能够根据根据数据类或者数据类型,以不同的方式处理对象。或者说,提供方法或者属性的不同实现方法,但具有相同的签名。三种类型多态性:接口多态性、继承多态性和抽象类多态性。

      •     接口多态性:多个类可以实现同样的接口,一个类也可以实现多个接口。
      •     继承多态性:在基类中使用virtual关键字,然后在子类中重写功能。由于继承类会继承基类中所有的方法、属性、特性以及事件。当不想继承基类中欧过的某些功能时,可以稍作变化。
      •     抽象类多态性:抽象类使用abstract关键字标记的类。抽象类通常具有抽象方法,只定义了没有实现的方法,不能实例化。完全靠子类来实现功能。其实抽象类实现多态性有点想继承类多态性,只不过关键字不同。同时,也比较像接口中定义的方法,即只提供声明,表示该方法会在子类中实现。

    例如:使用继承多态性实现代码如下:

     

    继承多态性
     1 class DUOTAI
     2 
     3     {
     4         public void test()
     5         {
     6             Animal animal = new Animal();
     7             Dog dog = new Dog();
     8             speak(animal);
     9             speak(dog);
    10             Console.ReadLine();
    11         }
    12 
    13         protected static void speak(Animal animal)
    14         {
    15            animal.bark();
    16         }
    17 
    18     }
    19 
    20     public class Animal
    21 
    22     {
    23         public virtual void bark()
    24 
    25         {
    26             Console.WriteLine("animal bark");
    27         }
    28     }
    29 
    30     public class Dog : Animal
    31     {
    32        public override void bark()
    33         {
    34             Console.WriteLine("dog bark");
    35         }
    36     }

    运行结果是:animal bark;dog bark。

    例如:使用抽象类多态性如下:

     

    抽象多态性
    class CHOUXIANGDUOTAI

        {
            
    public void test()

            {       
                dog dog 
    = new dog();
                Cat cat 
    = new Cat();
                speak(dog);
                speak(cat);
               Console.ReadLine();
            }

            
    protected void speak(animal a)
            {
                a.bark();
            }
        }

        
    public abstract class animal
        {
            
    public abstract void bark();   
        }

        
    public class dog : animal
        {
            
    public override void bark()

        {
        Console.WriteLine(
    "dog bark");
        }       
        }

        
    public class Cat : animal

        {
            
    public override void bark()
        {
        Console.WriteLine(
    "cat bark");
     
        } 
        }

    }
  • 相关阅读:
    MFC
    AC自动机
    KMP
    Power Transmission (Hard Edition)
    Floyd
    地杰斯特算法
    二叉树
    51nod 1002 数塔取数问题【dp】
    51nod1049 最大子段和【动态规划】
    poj2385
  • 原文地址:https://www.cnblogs.com/janes/p/1414682.html
Copyright © 2011-2022 走看看