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

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

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

A没有显示继承其他类

首先,覆写是什么意思你肯定知道,子类的把父类的给覆盖掉了。子类拥有的方法域是子类的方法域与父类中可见的方法域的并集,如有重复,则保留子类中的此方法。至于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;
    }
}

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

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

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

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

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

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

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

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

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

土豪的世界我们不能理解,重写equals()方法后new的又是A的对象,无论怎么样都调用不了父类的equals()了,如果想调要么你删掉重写的equals()方法,要么new一个Object对象啊