Standardmetoder
Abstrakt klass vs Interface: Gränssnittet slår tillbaka!
Tidigare kunde metoder med implementationer endast finnas i abstrakta klasser, men från och med Java 8 dök de även upp i gränssnitt.
Låt oss titta på syntaxen för att deklarera en default-metod:
default dataType methodName(parameters) {
// implementation
}
Vi behöver default-metoder för samma syften som vanliga metoder i Java. Vi använder dem när vi behöver en implementation i metoden och när vi vill implementera endast gränssnittet utan ytterligare klasser. Låt oss titta på ett litet exempel med default-metoder:
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! } }
I det här exemplet innehåller gränssnittet Greeting
en standardmetod sayHello()
med en standardimplementation. Klassen GreetingImpl
implementerar detta gränssnitt och överskuggar metoden greet()
. I huvudmetoden skapas en instans av GreetingImpl
och båda metoderna anropas.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 4.76
Standardmetoder
Svep för att visa menyn
Abstrakt klass vs Interface: Gränssnittet slår tillbaka!
Tidigare kunde metoder med implementationer endast finnas i abstrakta klasser, men från och med Java 8 dök de även upp i gränssnitt.
Låt oss titta på syntaxen för att deklarera en default-metod:
default dataType methodName(parameters) {
// implementation
}
Vi behöver default-metoder för samma syften som vanliga metoder i Java. Vi använder dem när vi behöver en implementation i metoden och när vi vill implementera endast gränssnittet utan ytterligare klasser. Låt oss titta på ett litet exempel med default-metoder:
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! } }
I det här exemplet innehåller gränssnittet Greeting
en standardmetod sayHello()
med en standardimplementation. Klassen GreetingImpl
implementerar detta gränssnitt och överskuggar metoden greet()
. I huvudmetoden skapas en instans av GreetingImpl
och båda metoderna anropas.
Tack för dina kommentarer!