如果子类扩展Base类异常

时间:2013-10-08 23:00:57

标签: java oop exception inheritance

我有一个疑问。 想象一下,如果我们有一个实现该方法的A类 例如

 private void methodA(int index) throws Exception, Error {

 }

如果我们有一个扩展第一类A的B类。 我的问题是,B类可以实施吗

 private void methodA(int index) throws Exception, Error {
 }

在哪种情况下调用哪种方法!!

由于

4 个答案:

答案 0 :(得分:1)

如果你的方法没有被声明为“私有”,那么这只是标准的多态性。因为它们是私有的,所以规则有点不同。 A类中的版本只能从A类中的代码调用.B类中的版本只能从B类中实际的代码中调用(而不是B类获得的代码)扩展A)类。

答案 1 :(得分:1)

,您可以实施 B类中的methodA方法,但请注意,您没有覆盖它。

您的方法已声明为广告private,因此扩展类不会“可见”。

如果您的目的是使方法可以覆盖,则需要将其声明为public

答案 2 :(得分:0)

试一试:)

public class Main {
    public static void main(String[] args) {
        Base base;
        base = new A();
        System.out.println(base.doSth());

        base = new B();
        System.out.println(base.doSth());
    }
}

abstract class Base {
    public abstract String doSth();
}

class A extends Base {
    @Override
    public String doSth() {
        return "A";
    }
}

class B extends A {
    @Override
    public String doSth() {
        return "B";
    }
}

答案 3 :(得分:-1)

我认为你想要覆盖超类方法,为此,子类上的方法必须具有相同的超类方法签名。

您可以通过以下方式调用这些方法:

  • 假设test1classA的实例,teste1.methodA(index)将在超类上执行实现。

  • 假设test2classB的实例,test2.methodA(index)将执行子类方法。

  • classB中,您可以调用超类方法(如果方法不是private),例如:

    public class ClassB extends ClassA
    {
        ...
        super.methodA(index);
        ...
    }