zoukankan      html  css  js  c++  java
  • 学习OOP——三大特性之一“继承”的总结

    "僧问:不历僧只获法身,请师直指。师云:子承父业。"@-@/

    OOP三大基本特性之一“继承”,存在父类或接口与子类的关系,而判断谁是父类谁是子类在于关键词extends.

    对于子类来说,父类只能有一个,而父类下面可以有多个子类,子类可以继承父类的方法或者属性,必定涉及到当前对象与父类对象的区别。

    this表示在当前构造方法中调用其他的重载构造;而super表示在子类构造中调用父类的构造。

    而this和super必须位于当前构造方法的第一句,否则就会报错。

     

     尽管子类可以继承父类的方法与属性,但是也不是能完全继承的,以下三个属于不能继承的范畴:

      (1)私有的  privaate

      (2)构造方法 constuctor

      (3)非同包子类受保护类型 protected

    讲到了修饰符,顺便介绍一下四个基本修饰符的访问权限控制:

    其中public修饰符可以在所有类型中被访问;

    而protected只能在同包或者不同包的子类被访问;

    default只能在同包中被访问;

    private只能在同类中被访问。

    在父类与子类之间,存在自动类型的转换与强制类型的转换

      其中自动类型转换指的是父类引用指向子类的对象

    看一个简单的例子:

      Water为父类,Xiaoming为子类,Xiaoming的两种对象为drink 和 eat,当父类引用指向子类对象时,eat 并没有表现出来.

     

     

    这就是向上转型,父类的引用可以直接指向子类的对象,但是子类单独定义的其他方法会丢失,如子类中"eat watermelon"并没有输出。

    而向下转型,指的是将子类对象赋值给父类引用,再强行转回子类,这时子类定义的其他方法就不会丢失了。

     

      这里在向上转型的基础上作出了一点改变,利用instanceof进行强制转换就可以保证子类方法不会丢失。

        

  • 相关阅读:
    解决Extjs分页工具条Ext.PagingToolbar无法换页问题 子曰
    使用“动软代码生成器”需要注意的问题 子曰
    格式化extjs DateField 的值 子曰
    构造extjs两级联动comBox 子曰
    SQLServer数据库设计表和字段(转) 子曰
    extjs 中取值的方式 子曰
    extjs中的控件无法正常显示 子曰
    extjs表单中的下拉框(comobobox)手动添加空选项 子曰
    C++基础学习笔记
    dhl:弹出div层,可关闭可移动
  • 原文地址:https://www.cnblogs.com/afeiiii/p/12977268.html
Copyright © 2011-2022 走看看