Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Oletusmenetelmät | Rajapinta
Java OOP

book
Oletusmenetelmät

Abstrakti luokka vs Rajapinta: Rajapinnan vastaisku!

Aiemmin toteutuksen sisältäviä metodeja voitiin määritellä vain abstrakteissa luokissa, mutta Java 8:sta alkaen niitä voi olla myös rajapinnoissa.

Tarkastellaanpa oletusmetodin määrittelyn syntaksia:

default dataType methodName(parameters) {
// implementation
}

Tarvitsemme oletusmetodeja samoihin tarkoituksiin kuin tavallisia metodeja Javassa. Käytämme niitä, kun tarvitsemme toteutuksen metodille ja kun haluamme toteuttaa vain rajapinnan ilman lisäluokkia. Tarkastellaan pientä esimerkkiä oletusmetodien käytöstä:

Main.java

Main.java

copy
package com.example;

public class Main {
public interface Greeting {
default void sayHello() {
System.out.println("Hello from the interface!");
}

void greet(String name);
}

public static class GreetingImpl implements Greeting {
@Override
public void greet(String name) {
System.out.println("Hello, " + name + "!");
}
}

public static void main(String[] args) {
GreetingImpl greetingImpl = new GreetingImpl();
greetingImpl.sayHello(); // Output: Hello from the interface!
greetingImpl.greet("Alice"); // Output: Hello, Alice!
}
}

12345678910111213141516171819202122232425
package com.example; public class Main { public interface Greeting { default void sayHello() { System.out.println("Hello from the interface!"); } void greet(String name); } public static class GreetingImpl implements Greeting { @Override public void greet(String name) { System.out.println("Hello, " + name + "!"); } } public static void main(String[] args) { GreetingImpl greetingImpl = new GreetingImpl(); greetingImpl.sayHello(); // Output: Hello from the interface! greetingImpl.greet("Alice"); // Output: Hello, Alice! } }

Tässä esimerkissä rajapinta Greeting sisältää oletusmetodin sayHello(), jolla on oletustoteutus. Luokka GreetingImpl toteuttaa tämän rajapinnan ja ylikirjoittaa greet()-metodin. Päämetodissa luodaan GreetingImpl-instanssi ja molempia metodeja kutsutaan.

question mark

Mikä on oletusmetodin tarkoitus Java-rajapinnassa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt