继承
继承:把这几个子类重复的成员单独拿出来封装成一个类,作为它们几个共同的父类
using System; namespace 继承 { class Program { static void Main(string[] args) { Student stu = new Student(); } public class Person//父类有了Name、Age、Gender属性,还有一个CHLSS方法 { 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 void CHLSS() { Console.WriteLine("我会吃喝拉撒睡"); } } public class Student:Person//子类继承父类有的属性和方法 { private int _id; public int Id { get { return _id; } set { _id = value; } } public void Study() { Console.WriteLine("学生会学习"); } } public class Teacher:Person { private double _salary; public double Salary { get { return _salary; } set { _salary = value; } } public void Teach() { Console.WriteLine("老师会讲课"); } } } }
子类继承了父类的什么?
继承了父类的:属性、方法
没继承父类的:私有字段、构造函数
子类虽然没有继承父类的构造函数,但是,子类实例化创建对象时会默认先调用父类无参数的构造函数。
为啥要调用父类的构造函数:因为子类创建父类的对象
为啥要创建父类的对象:子类要使用父类的成员,属性、方法。

继承父类后,报错解决办法:
1)如果父类写了一个有参的构造函数,子类就调不到了,要在父类中重新写一个无参数的构造函数。
public Person(string name,int age)//父类的构造函数 { this.Name = name; this.Age = age; this.Gender = Gender; } public Person()//父类里再写个无参的,子类就调得到了 { }
2)父类写了有参的构造函数,虽然调不到无参的了,但我可以用base关键字调用父类有参的构造函数。
public Person(string name,int age,char gender)//父类的构造函数 { this.Name = name; this.Age = age; this.Gender = gender; } public class Student:Person { public Student(string name,int age,char gender,int id)//把main方法那边的值依次的传给属性 :base(name,age,gender)//调用父类构造函数 { }

浙公网安备 33010602011771号