Hier ist das Programm: < /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>
Ausführen Dies druckt Folgendes aus: < /p>
a.f(b) = 10
c.f(a) = 10
c.f(b) = 12
c.f(c) = 12
b.f(c) = 12
< /code>
Aber ich kann wirklich nicht verstehen, wie! Kann jemand den Prozess erklären, den das Programm folgt, um 10 für A.F (b) zu entwickeln? Wohin geht es? Entschuldigung, ich bin ein Anfänger. Ich habe noch kein gutes Verständnis ... < /p>
Dies war eine alte Übung von meinem Professor, wir sollten die Lösung dafür in unserem Kopf finden ohne einen Computer zu verwenden. Ich habe versucht, es logisch zu folgen, aber ich wurde sehr verwirrt.
Wie finde ich das Ergebnis dieses Ausdrucks in Java? ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post