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. Niitä käytetään, 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-olio ja molempia menetelmiä kutsutaan.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme