zoukankan      html  css  js  c++  java
  • Java——继承,重载,重写三剑客


    About-继承

    • 所有Java的类均是由java.lang.Object类继承而来的,所以Object是所有类的祖先类,而除了Object外,所有类必须有一个父类。

    • 继承可以理解为一个对象从另一个对象获取属性的过程。

    • 如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A继承而来的。在Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类。

    Java只支持单继承(继承基本类和抽象类),但是我们可以用接口来实现(多继承接口来实现),脚本结构如:

    public class Apple extends Fruit implements Fruit1, Fruit2{}

    如何使用继承

    1、编写父类

    class A{
    //共同的属性,方法 }

    2、 编写子类,继承父类

    class B extends A{ //子类持有的属性和方法 }

    理解继承

    1、子类访问父类成员

    使用super关键字

    2、访问父类属性

    super代表父类对象 super.name;

    3、 访问父类方法

    super.print();

    继承后的初始化顺序

    1. 父类属性
    2. 父类构造方法
    3. 子类属性
    4. 子类构造方法

    不能继承的条件

    有些父类成员不能继承:

    1. 子类不能访问父类private成员
    2. 子类与父类不在同包,使用默认访问权限的成员
    3. 构造方法

    About-重载

    • 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型呢?可以相同也可以不同。
    • 每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
    • 重载

    重载规则

    • 被重载的方法必须改变参数列表;
    • 被重载的方法可以改变返回类型;
    • 被重载的方法可以改变访问修饰符;
    • 被重载的方法可以声明新的或更广的检查异常;
    • 方法能够在同一个类中或者在一个子类中被重载。
    • -

    About-重写

    重写(Override)

    • 重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。即外壳不变,核心重写!
    • 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
    • 在面向对象原则里,重写意味着可以重写任何现有方法。

    方法的重写。

    • 在有父类方法的子类重写父类的方法。
    • 默认调用父类方法内容。
    • 作用:可以在子类中重写父类方法。

    调用父类中定义的方法结果:

    1,如果子类没有重写父类的方法,调用的就是父类的实现。

    2.如果子类重写了父类的方法,调用的就是子类中的实现。

    方法写重写的规则

    参数列表必须完全与被重写方法的相同;
    返回类型必须完全与被重写方法的返回类型相同;
    访问权限不能比父类中被重写的方法的访问权限更高。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
    父类的成员方法只能被它的子类重写。
    声明为final的方法不能被重写。
    声明为static的方法不能被重写,但是能够被再次声明。
    如果一个方法不能被继承,那么该方法不能被重写。
    子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
    子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。
    重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
    构造方法不能被重写。
    如果不能继承一个方法,则不能重写这个方法。


    Super关键字的使用

    当需要在子类中调用父类的被重写方法时,要使用super关键字。


    “三剑客”的区别

    这里写图片描述

  • 相关阅读:
    Canvas与Image互相转换示例以及利用该技术实现微信长按自动识别二维码功能
    chrome浏览器无法安装非应用商店插件的解决办法
    用canvas绘制android机器人
    TortoiseGit保存用户名和密码的方法
    event对象的兼容性
    利用jQuery无缝滚动插件liMarquee实现图片(链接)和文字(链接)向右无缝滚动(兼容ie7+)
    jQuery动画的hover连续触发动画bug处理
    用jquery实现平滑的页面滚动效果
    实现段落文字两端对齐的css样式
    前端构建工具gulpjs的使用介绍及技巧(转)
  • 原文地址:https://www.cnblogs.com/aixing/p/13327737.html
Copyright © 2011-2022 走看看