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)”特性。

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

  • 相关阅读:
    linux openssh 升级
    局域网从另一台电脑copy文件(Linux系统下)
    单例模式
    6、android传递数据之剪切板传递数据
    5、android使用意图传递数据之全局变量传递
    4、android生命周期的介绍
    3、android搭建开发环境介绍
    2、android系统框架的介绍
    1、安卓学习线路图
    7、开发有状态bean
  • 原文地址:https://www.cnblogs.com/guyg/p/3881378.html
Copyright © 2011-2022 走看看