C#:继承

前面我们学到了有关面向对象的概念,而继承正是面向对象三大特征之一(其他两点分别是多态、封装)。

继承在百度上的定义:继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。

这句话说明了继承的两个作用:

1.使子类具有父类的属性和方法。

2.子类可重新定义、追加属性和方法等。

我们今天就来讲解第一个作用。

第一句话从字面意义上来讲已经把继承的这个作用说的很清楚了:陈A是陈B的儿子,儿子和爸爸长得很像,并且也能继承爸爸的财产,这可以说成是儿子继承了爸爸的属性;而儿子的脾气秉性和爸爸特别像,这个也可以说成是儿子继承了爸爸的方法。

继承的基本语法:(Father表示父类,Son表示子类)

public class Father        
    {            
        ...        
    }

public class Son:Father
    {
        ...
    }

在以上代码中,Son:Father就表示了Son类继承了Father类。

继承的注意事项:

-由于字段一般被设置为私有,因此不建议通过继承调用

-子类继承父类,但无法继承父类的私有成员

-子类可有自己的特有成员

继承的用法?
既然介绍了继承的作用,那么继承怎么用呢?为什么要用继承呢?

我们来看一个例子。(本例子使用到构造函数这一概念)
父类:

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

namespace ConsoleApp3
{
    public class Person
    {

        public Person(string name, int age, char gender)//构造函数
        {
            this.Name = name;
            this.Age = age;
            this.Gender = gender;
        }

        public string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        int _age;
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }

        char _gender;
        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }

        public void Show()
        {
            Console.WriteLine("我是{0},我今年{1}岁,是个{2}的,我似里哥哥", this.Name,this.Age,this.Gender);
        }
    }
}

子类:

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

namespace ConsoleApp3
{
    public class Student : Person
    {
        public Student(string name, int age, char gender, string id):base(name,age,gender)//构造函数,继承父类的属性
        {

            this.ID = id;
        }

        string _id;

        public string ID
        {
            get { return _id; }
            set { _id = value; }
        }

        public void SayHello()
        {
            Console.WriteLine("我叫{0},我今年{1}岁,{2}生,我的ID是{3}", this.Name, this.Age, this.Gender,this.ID);
        }
    }
}

运行程序:

using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person("孙笑川",25,'男');
            p.Show();
            

            Student s = new Student("小涛",30,'女',"波涛汹涌");
            s.SayHello();

            Console.ReadKey();
        }
    }
}

父类和子类都有共同的属性:name、age、gender;而子类又有自己的独特属性:id。而如果我不用继承,那么我除了要在必要的Person类中写下name、age、gender这三个基本属性,我还要在Student类中继续写这几个代码。这无疑增加了代码量。而若是有10个类似的类,而他们又都有相类似的数十个属性,那么繁重的代码量不仅让程序员感到劳累,还会容易出错。

猜你喜欢

转载自blog.csdn.net/Marshallren/article/details/86548726