Вот программа: < /p>
interface I {
int f(int i);
int f(I i);
}
abstract class A implements I {
protected int i;
public A(int i) { this.i = i; }
abstract public int f(int j);
public int f(I that) {
return this.f(i) + that.f(i); }
}
class B extends A {
public B(int i) { super(2*1); }
public int f(int j) { return i+j; }
}
class C extends B {
public C(int i) { super(i); }
public int f(int j) {
return super.f(j)+j; }
}
public class Main {
public static void main(String[] args) {
int x = 12;
B c = new C(x);
B b = c;
A a = new B(x);
I i;
System.out.println("a.f(b) = " + a.f(b));
System.out.println("c.f(a) = " + c.f(a));
System.out.println("c.f(b) = " + c.f(b));
System.out.println("c.f(c) = " + c.f(c));
System.out.println("b.f(c) = " + b.f(c));
}
}
< /code>
Запуск этого напечатает следующее: < /p>
a.f(b) = 10
c.f(a) = 10
c.f(b) = 12
c.f(c) = 12
b.f(c) = 12
< /code>
Но я действительно не могу понять, как! Может ли кто -нибудь объяснить процесс, которым следует программа, чтобы придумать 10 для A.F (b)? Куда это идет? Извините, я новичок, у меня еще нет хорошего понимания ... < /p>
Это было старое упражнение от моего профессора, мы должны были найти решение в нашей голове без использования компьютера. Я пытался следовать за этим логически, но я очень запутался.
Подробнее здесь: https://stackoverflow.com/questions/794 ... on-in-java