zoukankan      html  css  js  c++  java
  • Java Super 覆盖方法

    子类从父类中继承方法,有时候,子类需要修改父类中定义的方法的实现,这称作方法覆盖。

    比如,GeometricObject类中的toString方法返回表示集合对象的字符串,这个方法就可以被覆盖,返回表示圆的字符串。

     1 public String toString(){

    2   return super.toString()+" radius is "+radius;

    3 } 

    要在Circle类中调用定义在GeometricObject中的toString方法,使用super.toString()。

    需要注意的是:

    1、仅当实例方法是可访问时,它才能被覆盖。因为私有方法不能在它的类之外被访问。如果子类中定义的方法在父类中是私有的,那么这两个类完全没有关系。

    2、静态方法能被继承,但是不能被覆盖。如果父类中定义的静态方法在子类中被重新定义,那么定义在父类中的静态方法将被隐藏,使用 父类名.静态方法名 调用隐藏的静态方法。

    另外,说一下Object类中equals的方法的默认实现和覆盖方法:

     1 public boolean equals(Object obj){ 2 return (this==obj); 3 } 

    这个方法使用==运算符检测两个引用变量是否指向同一个对象,因此,应该在自己的客户类中覆盖这个方法,以测试两个不同的对象是否具有相同的内容。比如基于元的半径比较两个圆是否相等,如下所示:

    1     public boolean equals(Object obj){
    2         if(obj instanceof Circle){
    3             return radius==((Circle)obj).radius;
    4         }
    5         else
    6             return false;
    7     }

    这时,需要注意的是,覆盖equals方法时,必须使用equals(Object obj)。

  • 相关阅读:
    Centos给php安装cassandra扩展
    树莓派配置文档 config.txt 说明(转)
    ubuntu远程桌面连接windows系统(转)
    Shell学习笔记
    linux终端terminal个性化配置(转)
    ubuntu14.04安装bodhi桌面系统后,unity启动界面改变,如何还原
    man curl_easy_perform(原创)
    man curl_easy_setopt(原创)
    树莓派 config.txt
    使用dd命令克隆整个系统(转)
  • 原文地址:https://www.cnblogs.com/xingzhui/p/5705325.html
Copyright © 2011-2022 走看看