C# 类的继承简单理解

类的继承
  • 继承的概念
    我们可能会在一些类中,写一些重复的成员(字段,属性,方法),我们可以将这些重复的成员,单独的封装到一个类中,作为这些类的父类。
    Person ----------------------------------- 父类&基类
    Student、Teacher、Driver --------- 子类&派生类
    object是所有类的基类。
  • 子类从父类那里继承过来了什么?
    首先,子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段。
  • 子类有没有继承父类的构造函数?
    子类并没有继承父类的构造函数。但是,子类会默认的调用父类无参数的构造函数,用于创建父类对象,让子类可以使用父类中的成员。所以,如果在父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了,子类就调用不到了。
    解决办法: 1)、在父类中重新写一个无参数的构造函数。2)、在子类中显示的调用父类的构造函数,使用关键字:base()
  • 继承的特性
    继承的单根性:一个子类只能有一个父类。
    继承的传递性
  • new关键字新用法
    1)、创建对象
    2)、隐藏从父类那里继承过来的同名成员。 (隐藏的后果就是子类调用不到父类的成员)
  • 类的继承Demo
public class Person
{
    private string _name;
    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }
    private int _age;
    public int Age
    {
        get { return _age; }
        set { _age = value; }
    }
    private char _gender;
    public char Gender
    {
        get { return _gender; }
        set { _gender = value; }
    }
    public Person(string name, int age, char gender)
    {
        this.Name = name;
        this.Age = age;
        this.Gender = gender;
    }
    public void CHLSS()
    {
        Console.WriteLine("吃喝拉撒睡");
    }
}
public class Student : Person
{
    public Student(string name, int age, char gender, int id)
        : base(name, age, gender)
    {
        this.Id = id;
    }
    private int _id;
    public int Id
    {
        get { return _id; }
        set { _id = value; }
    }
    public void Study()
    {
        Console.WriteLine("学生会听课");
    }
}
public class Teacher :Person
{
    public Teacher(string name, int age, char gender, double salary)
        : base(name, age, gender)
    {
        this.Salary = salary;
    }
    private double _salary;
    public double Salary
    {
        get { return _salary; }
        set { _salary = value; }
    }
    public void Teach()
    {
        Console.WriteLine("老师会讲课");
    }
}
public class Driver:Person
{
    public Driver(string name, int age, char gender, int driveTime)
        : base(name, age, gender)
    {
        this.DirveTime = driveTime;
    }
    private int _dirveTime;
    public int DirveTime
    {
        get { return _dirveTime; }
        set { _dirveTime = value; }
    }
    public void Drive()
    {
        Console.WriteLine("司机会开车");
    }
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值