zoukankan      html  css  js  c++  java
  • 【c# 学习笔记】继承

      在c#中,一个类可以继承另外一个已有的类(密封类除外),被继承的类称为基类(或父类),继承的类称为派生类(或子类),子类将获得基类

    除构造函数和析构函数以外的所有成员。此外,静态类是密封的,也不能被继承。

      例如,牛、羊、马等都是动物,但它们是不同种类的动物,除了具有动物的共同性外,它们还具有各自的特点,如不同的用途、不同的发声方式等。

    我们可以把动物定义为牛、羊、马的父类,这样子类不但继承了基类除构造函数和析构函数以外的所有成员,还可以添加自己特有的成员。

      通过继承,程序可实现对父类代码的复用。因为子类可继承父类的所有成员,父类中定义的代码便不需要在子类中进行重复定义了。

      c#与c++不同,c#仅支持派生于一个基类,而c++则支持多重继承。但c#可以继承多个接口,如下演示继承的使用方法:

        public class Animal
        {
            private int _age;
    
            public int Age
            {
                get { return _age; }
                set
                {
                    //这里假设牛的寿命为10年。
    
                    if(value <0 ||value >10)
                    {
                        throw (new ArgumentOutOfRangeException("AgeIntPropery", value, "年龄必须在0-10之间"));
                       
                    }
                    _age = value;
                }
            }
    
            //马(子类)
    
            public class Horse:Animal
            {
    
            }
    
            //羊 (子类)
            public class Sheep:Animal
            {
    
            }
    
        }
            static void Main(string[] args)
            {
    
                Horse horse = new Horse();
                horse.Age = 2;
                Console.WriteLine("马的年龄为:{0}", horse.Age);
    
                Sheep sheep = new Sheep();
                sheep.Age = 1;
                Console.WriteLine("羊的年龄为:{0}", sheep.Age);
    
                Console.Read();
            }

      如上,虽然各个子类并没有定义Age属性,但由于它们都继承自基类Animal,基类中又定义了Age属性,所以子类也就继承了父类中的Age。通过继承,避

    免了在子类中重复定义Age,从而达到代码复用的目的。

      注:子类并不能对父类的私有成员进行直接访问,它只可对保护成员和公有成员进行访问。如果把上面代码中的Age属性定义为私有属性,Main函数就不能

    对该属性进行赋值操作了。私有成员也会被子类继承,但子类不能直接访问私有成员,子类可以通过调用公有或保护方法来间接地对私有成员进行访问。

  • 相关阅读:
    学习PetShop3.0(9)工厂的资料
    net程序架构开发
    《解剖PetShop》系列之一
    与数据库相关的名词解释
    asp 导出Excel
    《解剖PetShop》系列之二
    业务模块的设计原则
    《解剖PetShop》系列之三
    JAVA之BigInteger(转)【转】【很好用啊】
    php_mcrypt.dll无法加载解决方法
  • 原文地址:https://www.cnblogs.com/xiaoyehack/p/9209450.html
Copyright © 2011-2022 走看看