2020-11-21

面向对象的继承

1、我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员(属性、方法)单独封装到一个类中,作为这些类的父类。

(1)子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段。

(2)子类并没有继承父类的构造函数,默认会调用父类的无参构造函数,创建父类对象,让子类可以使用父类中的成员。

(3)如果在父类中写了一个带参数的构造函数,那么默认自带的午餐构造函数就被替代了,子类就调用不了此无参构造函数了。

解决方法:

(1)在父类重新写一个无参数的构造函数
(2)在子类中显示调用父类的构造函数,使用关键字:base()

2、Object 所有类的父类(基类)

例子:

父类Person

    //学生:叫美丽 10岁 爱好洗碗 性别女
   //老师:职业老师  叫刚子 喜欢游泳 性别男  技能教书 40岁
   //2个类共有的属性:姓名  性别  年龄 爱好
    //Person为父类
      public class Person {
          public string Name { get; set; }
          public string Sex { get; set; }
          public int Age { get; set; }
          public string Hobby { get; set; }
                    
          //使用构造函数初始化
          public  Person(string name,string sex,int age,string hobby)
          {
              this.Age = age;
              this.Name = name;
              this.Sex = sex;
              this.Hobby = hobby;                
          }
      }            

子类1

       //学生类继承Person
        public class Student:Person
        {
            //子类显式调用父类构造函数:base(父类的构造函数)
            public Student(string name, string sex, int age, string hobby) : base(name, sex, age, hobby) { }
            public void Stu()
            {
                Console.WriteLine("我叫{0},今年{1}岁了,我是一个{2}生,我的爱好是{3}",Name,Age,Sex,Hobby);
            }
        }

子类2

      //老师类继承Person
        public class Teacher : Person
        {
            public string Position { get; set; }
            public string Skill { get; set; }
            
            //调用父类构造函数
            public Teacher(string name, string sex, int age, string hobby, string position, string skill) : base(name, sex, age, hobby)
            {
                this.Position = position;
                this.Skill = skill;
            }
              
            public void Te()
            {
                Console.WriteLine("我叫{0},今年{1}岁了,我是一个{2},我的爱好是{3},我的技能是{4},我的职业{5}", Name, Age, Sex, Hobby,Skill,Position);
            }
            
        }

主函数

 class Program
    {
        static void Main(string[] args)
        {    
            //调用子类对象(对象实例化)
            Student student = new Student("美丽","女",19,"洗碗");
            Teacher teacher = new Teacher("刚子", "男", 20, "游泳", "老师", "教书");

           //调用子类方法
            student.Stu();
            teacher.Te();    
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值