2 u012768347 u012768347 于 2016.04.14 12:12 提问

Java中子类实例可以调用父类方法吗 20C

通常情况子类覆写父类方法
如果是构造函数,直接用super()
如果是普通方法用super.method()

但是如果创建了子类实例,比如A类中覆写了Object的equals()方法
A a = new A();
a怎么调用Object的equals()方法

A没有显示继承其他类

11个回答

theSnai1
theSnai1   2016.04.14 15:31

就像你说的,可以在A类的equals方法中通过super来调用object类中的equals方法。

CSDNXIAOD
CSDNXIAOD   2016.04.14 12:22

PHP类中子类调用父类方法
java中子类继承父类方法及调用规则
java中子类,父类的方法调用及属性值
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.14 12:22

因为你A类中重写了equals方法了,所以你就调用不到Object的equals方法了。
但是,话说回来,Object的equals方法是最基本的,你A类要重写equals方法的话,必须也重写hashCode方法,需要保证equals相同的对象一定有相同的hashCode值。
所以,最好用Eclipse自带的重写equals方法,自动生成以保证这个约定的成立。

ultramanleoking
ultramanleoking   2016.04.14 15:46

这样并没有什么意义呀,,还是不要钻牛角尖了吧

HFUTJungle
HFUTJungle   2016.04.14 20:34

实在需要的话,你可以实例一个父类,用父类来调用重写的方法,这个方法比用反射直观些。

qq_34404081
qq_34404081   2016.04.14 12:22

你重写了equals方法,那你A类调用的肯定就是重写的方法了。但要是你一定要调用object里的方法,可以在把equals重载一下。

bi_ma_wen
bi_ma_wen   2016.04.14 12:23

既然要覆写了方法,还要调用,不是矛盾吗

Goskalrie
Goskalrie   2016.04.14 13:48

首先,覆写是什么意思你肯定知道,子类的把父类的给覆盖掉了。子类拥有的方法域是子类的方法域与父类中可见的方法域的并集,如有重复,则保留子类中的此方法。至于a怎么调用Object的equals()方法,可以使用反射,相当于直接生成一个Object的实例,只不过下面的代码看似和A有什么关系,其实没什么关系:

 public class A{
    public static void main(String[] args) throws Exception{
        A a = new A();
        a.equals(args);
        Method objectEquals = A.class.getSuperclass().getDeclaredMethod("equals", Object.class);
        System.out.println(objectEquals.invoke("A", "A"));
    }
    @Override
    public boolean equals(Object obj) {
        System.out.println("A.equals");
        return false;
    }
}
qq_15002323
qq_15002323   2016.04.14 15:02

你直接a.equals()不就可以么,要重写就在A类里面重写equals就行了

niaonao
niaonao   Rxr 2016.04.14 23:00

子类只能调用这个覆盖的方法 equals()

(覆盖的意思:就是将父类的覆盖掉了,子类对象调用该方法,只能是重写的覆盖方法,父类对象可以调用原来的equals())

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!