Oletusmenetelmät
Abstrakti luokka vs Rajapinta: Rajapinnan vastaisku!
Aiemmin toteutuksen sisältäviä metodeja voitiin käyttää vain abstrakteissa luokissa, mutta Java 8 -versiosta 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 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ää oletusmenetelmän sayHello(), jolla on oletustoteutus. Luokka GreetingImpl toteuttaa tämän rajapinnan ja ylikirjoittaa greet()-menetelmän. Pääohjelmassa luodaan GreetingImpl-instanssi ja molempia menetelmiä kutsutaan.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
What is the main difference between abstract classes and interfaces in Java?
Can you provide more examples of default methods in interfaces?
When should I use a default method in an interface instead of an abstract class?
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 käyttää vain abstrakteissa luokissa, mutta Java 8 -versiosta 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 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ää oletusmenetelmän sayHello(), jolla on oletustoteutus. Luokka GreetingImpl toteuttaa tämän rajapinnan ja ylikirjoittaa greet()-menetelmän. Pääohjelmassa luodaan GreetingImpl-instanssi ja molempia menetelmiä kutsutaan.
Kiitos palautteestasi!