Java Planet

O Javie i jej otoczeniu

Przesłanianie funkcji w Java

Ciekawsze przykłady z zakresu SCJP i przesłaniania funkcji (ang Overriding)
Przykład 1

class A {
	private void method1() {

	}
}

class B extends A {

	/**
	 * Metoda nie przesłonić metody method1() z klasy A
	 * ponieważ nie można przesłaniać metody która nie jest dziedziczona
	 * If a method can't be inherited, you cannot override it.
	 */
	public void method1() {
		// tak nie można - błąd kompilacji
		//super.method1();
	}
}

Przykład 2

class A {
	void test() {
		System.out.println("A");
	}
}

class B extends A {
	void test() {
		System.out.println("B");
	}
}

public class OverrideTest {
	public static void main(String[] args) {
		A var = new A();
		var.test();
		var = new B();
		var.test();

		/*
		 * Rezultat wykoniania:
		 * A
		 * B
		 */

	}
}

Przykład 3 – nie dziedziczymy funkcji statycznych i właściwości obiektu

class A {
	static void test() {
		System.out.println("A");
	}
}

class B extends A {
	static void test() {
		System.out.println("B");
	}
}

public class OverrideTest {
	public static void main(String[] args) {
		A var = new A();
		var.test();
		var = new B();
		var.test();

		/*
		 * Rezultat wykoniania:
		 * A
		 * A
		 *
		 * Ponieważ dziedziczone są tylko metody.
		 * Polimorfizm nie dotyczy metod statycznych i właściwości obiektu (ang Properties)
		 */

	}
}

Cytat z książki PRZYGOTOWANIE DO CERTYFIKACJI SCJP 6 autorstwa Mariusza Lipińskiego:

O tym, jakie metody możemy wywołać z użyciem danej referencji decyduje typ referencji a nie typ wskazywanego przez nią obiektu, ale to, która implementacja danej metody zostanie wybrana zależy już od faktycznie wskazywanego obiektu.

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

COMMENTS

No Comments

There are no comments posted yet. Be the first one!

Leave a Replay