• Java 继承02


    向上类型转换

      父类型的引用指向子类型的实例。

    Person p = new Person();
    Animal a = p;  //子类对象赋值给父类类型的变量

    注意:

    向上转型后,子类单独定义的方法会丢失。

    如果子类中重写了父类的方法,那么调用这个方法的时候,将会调用子类中的方法。

    意义:

    减少重复代码。

    实例化的时候可以根据不同的需求实例化不同的的对象,实现参数统一化。

    总结:

      1.假设A为基类,B为子类  

    B b = new B();

    A a = b;

    a.play(); //A,B中都定义了play()方法,即子类重写(覆写)了该方法

     

    分析:

    # 为什么父类型的引用可以指向子类型的对象?

    自动实现向上转型。通过A a = b;语句,编译器自动将子类对象向上移动,成为A类型。

    # a.play()将执行子类还是父类中定义的方法?

    子类的。在运行时期,将根据a这个引用所指向的实际对象来获取相应的方法,这也是多态性。一个父类的引用,指向不同的子类对象,执行该方法时,将表现出不同的行为。

     

     

    2.不能将子类引用指向父类对象

    A a = new A();

    B b = a; //这样是不行的,对比前面,可以知道父类不是子类(如同人不是男人)

     

    在java中,向上转型是自动进行的,但是向下转型却不是,需要我们强制进行类型转换。如:

    B b = new B();

    A a = b;

    B bb = (B)a;   //进行强制类型转换,也就是向下转型

     

    final修饰

      final修饰类,表示该类不能被继承;

      final修饰非final类中的方法,表示该方法在子类中不能被重写。

    Java中的动态绑定和静态绑定

    https://www.jb51.net/article/161540.htm

    https://www.cnblogs.com/xyz-star/p/10152676.html

    绑定:

      把一个方法 与其所在的 类/对象 关联起来,叫做方法的绑定。

      绑定分为:

        静态绑定(前期绑定):程序运行前就已经知道方法是属于哪个类的。

        动态绑定(后期绑定):在程序运行的过程中,根据具体的实例对象才能具体确定是哪个方法。

    静态绑定:  

          java当中的方法只有final、static、private修饰的的方法和构造方法是静态绑定的。

    静态属性和静态方法能否被继承,能否重写

    静态方法和属性:调用  类名.方法名完成的

    如果子类里面定义了和父类声明一样的静态方法和属性,那么这时候父类的静态方法或属性称之为“隐藏”

    多态之所以能够实现是依赖于继承和重写 、重载(继承和重写最为关键)。

    有了继承和重写就可以 实现父类的引用可以指向不同子类的对象。

    重写的功能是:“重写”后子类的优先级要高于父类的优先级,但是“隐藏”是没有这个优先级之分的。

    结论:静态属性、静态方法和非静态的属性都可以被继承和隐藏而不能够被重写,因此不能实现多态,不能实现父类的引用可以指向不同子类的对象。

    非静态的方法可以被继承和重写,因此可以实现多态。

     

    继承的优缺点

    在面向对象语言中,继承是必不可少的、非常优秀的语言机制,它有如下优点:

    实现代码共享,减少创建类的工作量,使子类可以拥有父类的方法和属性。

    提高代码维护性和可重用性。

    提高代码的可扩展性,更好的实现父类的方法。

    自然界的所有事物都是优点和缺点并存的,继承的缺点如下:

    继承是侵入性的。只要继承,就必须拥有父类的属性和方法。

    降低代码灵活性。子类拥有父类的属性和方法后多了些约束。

    增强代码耦合性(开发项目的原则为高内聚低耦合)。当父类的常量、变量和方法被修改时,需要考虑子类的修改,有可能会导致大段的代码需要重构。

  • 相关阅读:
    scrapy爬虫爬取小姐姐图片(不羞涩)
    scrapy爬虫登录edusrc查看漏洞列表
    代码审计【根据功能点定向审计】BugFree ZSWin重装案例
    645-2007协议解析
    最近总结
    防爆zigbee模块
    物联网卡余额管理软件更新
    激光+紫外催化控制器
    modbus转edp协议
    modbus转mqtt工具
  • 原文地址:https://www.cnblogs.com/jszfy/p/12803248.html
Copyright © 2020-2023  润新知