C#继承

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _04OOP继承
{
//继承:好处:减少代码的冗余
//子类继承了父类的属性和方法,并没有继承私有字段
//子类并没有继承父类的构造函数,而是会去调用父类那个五参数的构造函数
//目的:为了初始化父类,能够让子类调用到父类中的成员。

//当你在父类中重写了有参数的构造函数之后,那个无参数的构造函数就被干掉了
//此时,子类调不到了,解决办法:
//1、在父类总重新写一个无参数的构造函数
//2、在子类中显示的调用父类的构造函数 :base 减少代码冗余

//base:1、显示的调用父类的构造函数;2、调用父类中的重名方法
class Program
{
static void Main(string[] args)
{
/*
* Student--派生类
* 姓名 性别 年龄 学号 吃喝拉撒睡 学习
* Teacher--派生类
* 姓名 性别 年龄 工资 吃喝拉撒睡 讲课
* Driver--派生类
* 姓名 性别 年龄 驾龄 吃喝拉撒睡 开车
*
* 姓名 性别 年龄 吃喝拉撒睡 是共有的放在Person类中---基类
*
*/
Student s = new Student();

}
}
public class Person
{
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 CHLSS()
{
Console.WriteLine("人类可以吃喝拉撒睡!");
}
public Person(string name,int age,char gender)
{
this.Name = name;
this.Age = age;
this.Gender = gender;
}
public Person()
{

//}

}
public class Teacher : Person
{
public Teacher(string name,int age,char gender,double salary):base(name,age,gender)
{
this.Salary=salary;
}
double _salary;

public double Salary
{
get { return _salary; }
set { _salary = value; }
}
public void Teach()
{
Console.WriteLine("教师会讲课");
}

}
public class Student : Person
{
public Student(string name,int age,char gender,int id):base(name,age,gender)
{
this.ID=id;
}

int _id;

public int ID
{
get { return _id; }
set { _id = value; }
}
public void Study()
{
Console.WriteLine("学生会学习!");
}

}
public class Driver : Person
{
public Driver(string name,int age,char gender,int driveTime):base(name,age,gender)
{
this.DriverTime=driveTime;
}
int _driverTime;

public int DriverTime
{
get { return _driverTime; }
set { _driverTime = value; }
}
public void Drive()
{
Console.WriteLine("司机会开车");
}
}
}

posted @ 2018-05-11 11:43  枫影竹韵  阅读(153)  评论(0编辑  收藏  举报