我有一个疑问。 想象一下,如果我们有一个实现该方法的A类 例如
private void methodA(int index) throws Exception, Error {
}
如果我们有一个扩展第一类A的B类。 我的问题是,B类可以实施吗
private void methodA(int index) throws Exception, Error {
}
在哪种情况下调用哪种方法!!
由于
答案 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)
我认为你想要覆盖超类方法,为此,子类上的方法必须具有相同的超类方法签名。
您可以通过以下方式调用这些方法:
假设test1
是classA
的实例,teste1.methodA(index)
将在超类上执行实现。
假设test2
是classB
的实例,test2.methodA(index)
将执行子类方法。
在classB
中,您可以调用超类方法(如果方法不是private
),例如:
public class ClassB extends ClassA
{
...
super.methodA(index);
...
}