zoukankan      html  css  js  c++  java
  • C#编程语言与面向对象——继承

    现实生活中的事物都归属于一定的类别,比如,狮子是一种(IS_A)动物,为了在计算机中模拟这种关系,面向对象的语言引入了继承(inherit)特性。

    构成继承关系的两个类中,Animal称为父类(parent class)或基类(base class),Lion称为子类(child class)。

    父类与子类之间拥有以下两个基本特性:

    1.是一种(IS_A)关系:子类是父类的一种特例。

    2.扩充(Extends)关系:子类拥有父类所没有的功能。

     class Animal
        {
           
        }
        class Lion : Animal 
        {
        
        }

    可以看到,C#中用一个冒号间隔开父类和子类。

    类成员的访问权限

    面向对象编程的一大特性就是可以控制类成员的可访问性。当前主流的面向对象语言都拥有以下三种基本的可访问性

    继承条件下的类成员访问权限

    1.所有不必让外人知道的东西都是私有的。

    2.所有需要向外提供服务都是公有的。

    3.所有的“祖传秘方”,“秘不外传”的都是保护的。

    internal

    关键字internal所确定的“内部”访问性。

    internal有点像public,外界类也可以直接访问声明为internal的类或类的成员。但这只局限于同一个程序集中。

    internal是C#默认可访问性,就是说,如果某个类没有任何可访问性关键字在它前面的则是internal。

    方法重载、隐藏域虚方法调用

    子类方法与父类方法之间的关系可以概括以下三种:

    1.扩充(Extend):子类方法,父类没有;

    2.重载(Overload):子类有父类的同名函数,但参数类型或数目不一样;

    3.完全相同:子类方法与父类方法从方法名称到参数类型完全一样。

    在子类与父类中方法完全相同的情况下,调用哪个方法有对象变量的类型决定。

    重写(override)与虚方法调用

        class Animal
        {
            public virtual void OverrideF()
            {
                System.Console.WriteLine("Animal OverideF");
            }
        }
        class Lion : Animal
        {
            public override void OverrideF()
            {
                System.Console.WriteLine("Lion OverideF");
            }
        }
    static void Main(string[] args)
            {
                Lion lion = new Lion();
                Animal animal;
                animal = lion;
                animal.OverrideF();
                Console.ReadKey();
            }

    结果为:

    Lion OverideF

    在animal引用不同对象是,其运用的结果可能完全不一样,因此我们在编程时只针对父类变量提供的对外接口编程,就使我们的代码成了“变色龙”,传给它不同的子类对象,就干不同的事。

    这就是面向对象的“虚方法调用(Virtual Method Invoke)”特性。

    面向对象语言拥有的“虚方法调用”特性,使我们可以只用同样的一个语句,在运行时根据对象类型而执行不同的操作

  • 相关阅读:
    微信公众平台订阅号和服务号和企业号的区别
    微信支付现金红包接口说明及应用实例代码
    Android开发环境配置
    在自己的android工程中使用actionbarsherlock以及slidingmenu
    android个推推送平台的使用
    android网络
    android String 类型转换成UTF-8格式
    【转】android神一样的模拟器——genymotion
    基于百度云推送的实时通信客户端实现(三)
    基于百度云推送的实时通信客户端实现(二)
  • 原文地址:https://www.cnblogs.com/guyg/p/3881378.html
Copyright © 2011-2022 走看看