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
12345678910111213141516171819202122232425package 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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 4.76
Oletusmenetelmät
Pyyhkäise näyttääksesi valikon
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
12345678910111213141516171819202122232425package 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.
Kiitos palautteestasi!