一、继承
1、快捷创建属性 propfull 按下Tab键
2、Person类作为父类(基类),Student类作为子类(派生类),来继承Person,怎么实现呢
public class Student:Person
{
}
3、子类继承了父类的共有属性和方法,但是并没有继承父类的私有成员
4、继承的特性
1)单根性
2)继承具有传递性
5、子类有没有继承父类的构造函数?
子类不会继承父类的构造函数,但是会调用父类的默认构造函数,然后再调用自己的构造函数
子类怎样调用父类的构造函数?
使用base关键字来调用
练习:继承练习 Reporter类、Programmer类均继承自Person类,Person类中有 name age gender三个属性和构造函数,
构造函数为三个属性赋初值。
Reporter: hobby属性
Programmer:WorkerYear 属性
定义一个打印方法
打印出每个类对象中的每个属性的值
Person类:
class Person
{
private string _name;
/// <summary>
/// 姓名
/// </summary>
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _age;
/// <summary>
/// 年龄
/// </summary>
public int Age
{
get { return _age; }
set { _age = value; }
}
private char _gender;
/// <summary>
/// 性别
/// </summary>
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
/// <summary>
/// 含参构造函数
/// </summary>
/// <param name="n">姓名</param>
/// <param name="a">年龄</param>
/// <param name="g">性别</param>
public Person(string n,int a,char g)
{
Name = n;
Age = a;
Gender = g;
}
public Person()
{
}
/// <summary>
/// 打印
/// </summary>
public virtual void Hi()
{
Console.WriteLine("我是Person,名字是{0},性别{1},今年{2}岁了。",Name,Gender,Age);
}
}
Reporter类:
class Reporter:Person
{
private string _hobby;
/// <summary>
/// 爱好
/// </summary>
public string Hobby
{
get { return _hobby; }
set { _hobby = value; }
}
/// <summary>
/// 含参构造函数
/// </summary>
/// <param name="n"></param>
/// <param name="a"></param>
/// <param name="g"></param>
/// <param name="h">爱好</param>
public Reporter(string n, int a, char g,string h) : base(n, a, g)
{
Hobby = h;
}
/// <summary>
/// 打印
/// </summary>
public override void Hi()
{
Console.WriteLine("我是Reporter,名字是{0},性别{1},今年{2}岁了,爱好是{3}。", Name, Gender, Age,Hobby);
}
}
Programmer类:
class Programmer:Person
{
private int _workerYear;
/// <summary>
/// 工作年龄
/// </summary>
public int WorkerYear
{
get { return _workerYear; }
set { _workerYear = value; }
}
/// <summary>
/// 含参构造函数
/// </summary>
/// <param name="n"></param>
/// <param name="a"></param>
/// <param name="g"></param>
/// <param name="w">工作年龄</param>
public Programmer(string n, int a, char g, int w) : base(n, a, g)
{
WorkerYear = w;
}
/// <summary>
/// 打印
/// </summary>
public override void Hi()
{
Console.WriteLine("我是Reporter,名字是{0},性别{1},今年{2}岁了,工作了{3}年了。", Name, Gender, Age, WorkerYear);
}
}
主函数:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Day12zy_machenxi
{
class Program
{
static void Main(string[] args)
{
#region 练习:继承练习 Reporter类、Programmer类、Driver类均继承自Person类,Person类中有 name age gender三个属性和构造函数,
//构造函数为三个属性赋初值。Reporter: hobby属性 Programmer:WorkerYear 属性
//定义一个打印方法 打印出每个类对象中的每个属性的值
Person p = new Person("张三三", 15, '男');
Reporter r = new Reporter("李四四", 16, '女',"看电影");
Programmer pro = new Programmer("马五五", 17, '男', 1);
p.Hi();
r.Hi();
pro.Hi();
#endregion
Console.ReadLine();
}
}
}