Überladen über mehrere Klassen hinweg?

noplan

Mitglied
Hallo,

ich soll in folgendem Code alle Situationen finden, wo Methoden überladen werden:

Java:
class A {
	public static void foo (int x, long y) {
		System . out. println (x+y);
	}
	
	public static void foo (long x, int y) {
		System . out. println (x*y);
	}
}

class B {
	private String x = "foo";
	public void foo (int x, int y) {
		A.foo(x,y);
	}
	public static void main ( String [] args ) {
		B objB = new B();
		objB .foo (1 ,1);
	}
}

Was überladen bedeutet hab ich soweit kapiert glaube ich, allerdings nicht, ob das über mehrere Klassen hinweg Bedeutung hat.
Falls nein sind ja nur die beiden "foo" Methoden aus Klasse A überladen, falls es aber über Klassen hinweg gilt, wäre auch noch die "foo" Methode aus Klasse B überladen. Somit gäbe es dann 3 Überladungen? :bahnhof:
 
Genau.

Interessant wird nur folgendes:
Java:
public class A {
	public static void foo(final int x, final long y) {
		System.out.println("foo(int,long)");
	}
	
	public static void foo(final long x, final int y) {
		System.out.println("foo(long, int)");
	}
}
Java:
import static A.*;

public class B {
	
	public static void foo(final int x, final long y) {
		System.out.println("foo(int,int)");
	}

	public static void main(final String... args) {
		foo(5, 5l); // B.foo
		A.foo(5l, 3); // A.foo
		foo(5l, 3); // nicht möglich, da B.foo die Methode A.foo überdeckt
	}
}
So etwas nennt man dann
Code:
method hiding
.
 

Neue Themen


Zurück
Oben