【总结】-继承

  面向对象的三大特性封装,继承,多态,下面针对继承进行下总结;

  对象的继承表示了一种“is-a”的关系,定义了类之间是如何进行关联、共享的特性,子类继承父类或者说是基类继承派生类,子类继承父类的所有特性,且可以自己定义新的特性;

  1、理解

  继承跟UML中的继承是一样的,就好像人Person这个父类,还可以有老师,学生,工人这些子类,每个人都有姓名,年龄,身高等这些特征,但是老师还可以教课,学生需要写作业,工人需要工作,那么这里的教课、写作业、工作则为各个子类自己的新属性;

  2、 举例:

public class Person                //父类
    {
        string _name;
        public string Name
        {
            get { return _name; }
        }
        int _age;
        public int Age
        {
            get { return _age; }
        }        
    }
    public class Teacher : Person  //子类继承父类,子类在前父类在后
    {
        int _salary;
        public int Salary          //子类的新特性
        {
            get { return _salary; }
        }
        public void SayHi()       //子类的方法声明
        {
            Console.WriteLine("我是老师");
        }
    }

  3、关系

  • 子类可以继承父类非私有特性,既:子类可以继承父类的public和private的属性和功能
  • 子类具有自己的专有特性,即子类可以自行扩展父类的属性和功能
  • 子类可以以自己的方式或形式,实现父类的功能—方法重写

  4、子类调用父类有参构造函数

  • 子类中如果有有参数的构造函数,会默认的去调用父类中的无参数的构造函数,如果这时父类中已经有了一个有参构造函数,那么就会报错,这时候就需要用到重载,就是在父类中重载一个无参构造函数;
  • 子类调用父类的成员,也可以使用 base 关键字,显示调用有参构造函数—构造函数方法只能调用,不能被继承;

  5、里式转换原则

  • 子类隐士转换为父类
Person p = new Teacher();
  • new子类转换子类
//如果 new的时候 new的是 子类,那么再转换这个子类的时候可以
 Teacher t = (Teacher)p;  

//如果new的是子类,转换的时候 转的另一个子类,报异常 
Student stu = (Student)p;          
  • 父类对象不能直接转换子类–报异常
Student stu = (Student)p;   

  6、继承优缺点

  • 优点:父类存放子类共有部分,减少代码量实现代码共享,避免不必要的重复,容易修改和扩展已有的实现;
  • 缺点:打破了封装,因为基类向子类暴露了实现细节
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值