C#基础知识及题目练习 Day10 继承

一、继承


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();
        }
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值