继承

封装:可以想象成遥控器,你不需要知道它内部怎么实现的,它封装好你拿来就能用就行了

继承:把这几个类重复的成员单独拿出来封装成一个类,作为它们几个共同的父类

继承的特性:

单根性:只能有一个父类(基类)

传递性:孙子可以用父亲的、爷爷的、祖爷爷的属性(查看类图看它们之间的关系,视图 - 查看类图)

 

 

 

 

 

父类Person

using System;
using System.Collections.Generic;
using System.Text;

namespace 继承
{
    public class Person
    {
        private string _name;
        private int _age;
        private char _gender;
       
        public string Name { get => _name; set => _name = value; }
        public int Age { get => _age; set => _age = value; }
        public char Gender { get => _gender; set => _gender = value; }
        
        public void CHLSS()
        {
            Console.WriteLine("吃喝拉撒睡");
        }
    }
}

子类Student

using System;
using System.Collections.Generic;
using System.Text;

namespace 继承
{
    public class Student:Person
    {
        private int id;
        
        public int Id { get => id; set => id = value; }

        public void Study()
        {
            Console.WriteLine("学生会学习");
        }
    }
}

在Main方法里执行

using System;

namespace 继承
{
    class Program
    {
        static void Main(string[] args)
        {
            Student s = new Student();
            //这4个继承了父类Person的公共部分
            s.Name = "春哥";
            s.Age = 18;
            s.Gender = '';
            s.CHLSS();
            //这2个是继承了自己那部分
            s.Id = 9;
            s.Study();
        }
    }
    
}

 

子类并没有继承父类的构造函数。但是,子类会默认调用无参数的构造函数,在子类内部创建父类对象,这样子类就可以使用父类中的成员了。

所以在父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了,子类就调用不到了,所以子类会报错。

解决办法:

1)在父类中重新写一个无参数的构造函数

2)在子类中显示显示的调用父类有参的构造函数,使用关键字:base()  //调自己用this,调父类用base

 

 

 

 

 

posted @ 2022-11-19 22:12  小春博客  阅读(24)  评论(0编辑  收藏  举报