继承

1.继承是允许重用现有类去创建新类的过程。子类继承父类,一个子类只能有一个父类,父类可以有多个子类。子类具备父类的功能和属性,父类不具备子类的。

格式  子类:父类  (用冒号隔开)

2.子类父类变量的相互赋值

构成继承关系的父类和子类对象之间有一个重要的特性:子类对象可以被当成基类对象使用

子类可以直接转换成父类,但是父类不具备子类的属性和方法。

父类转换为子类是有条件的,这个父类的对象必须是由某个子类的对象转换来的,才能再转换回去。


using System;
using System.Collections.Generic;
using System.Text;

namespace 博客整理实例
{
    class Program
    {
        static void Main(string[] args)
        {
            dongwu da = new dongwu();
            da.zhonglei = "动物";//继承shengwu父类,可以直接点出shengwu类的变量
            Console.WriteLine(da.zhonglei);
            da.shengming();
            shengwu sa = da;
            sa.Name = "";//转换成父类,只能点出父类的变量
            Console.WriteLine(sa.Name);
            sa.shengming();
            dongwu za = (dongwu)sa;//再转换为dongwu类
            za.Name = "";
            za.food = "";
            Console.WriteLine(za.Name+"\t"+za.food);
            za.shengming();
            Console.ReadLine();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace 博客整理实例
{
    class shengwu
    {
        public string zhonglei;
        private string _Name;

        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        public void shengming()
        {
            Console.WriteLine("生物是生命体");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace 博客整理实例
{
    class dongwu:shengwu //继承父类shengwu
    {
        public string food;
        private string _Dname;

        public string Dname
        {
            get { return _Dname; }
            set { _Dname = value; }
        }
        public void shengming()
        {
            Console.WriteLine("动物是人类的朋友");
        }
    }
}

运行结果

3.方法的重载和隐藏

重载:子类有父类的同名函数,输入参数不同

隐藏:当子类与父类拥有完全一样的方法时,称“子类隐藏了父类的同名方法”。

当子类和父类的方法完全相同时,调用的时候取决于声明的类型(=号左面),而不是实例化的类型。

如上面的例子,调用的方法。

4.方法的重写

方法的重写:通过子类转换成父类后,通过父类调用函数,执行的是子类的函数,这就是函数的重写

父类变量引用的是子类对象,则调用的是子类定义的方法;父类变量引用的是父类对象,
则调用的是父类定义的方法。也就是说调用哪个方法取决于父类变量引用的真实对象类型,而与父类变量无关。

父类方法关键词virtual 子类方法关键词override

using System;
using System.Collections.Generic;
using System.Text;

namespace 博客整理实例
{
    class Program
    {
        static void Main(string[] args)
        {
            dongwu da = new dongwu();
            
            da.shengming();
            shengwu sa = da;
           
            sa.shengming();

            shengwu ssa = new shengwu();
            ssa.shengming();

            dongwu za = (dongwu)sa;//再转换为dongwu类
            
            za.shengming();
            Console.ReadLine();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace 博客整理实例
{
    class shengwu
    {
        public string zhonglei;
        private string _Name;

        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        public virtual void shengming()
        {
            Console.WriteLine("生物是生命体");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace 博客整理实例
{
    class dongwu:shengwu //继承父类shengwu
    {
        public string food;
        private string _Dname;

        public string Dname
        {
            get { return _Dname; }
            set { _Dname = value; }
        }
        public override void shengming()
        {
            Console.WriteLine("动物是人类的朋友");
        }
    }
}

运行结果

posted @ 2015-05-24 21:12  九省巡按  阅读(186)  评论(0)    收藏  举报