Https://dzone.com/articles/interface-default-methods-java থেকে
জাভা 8 "ডিফল্ট পদ্ধতি" বা (ডিফেন্ডার পদ্ধতিগুলি) নতুন বৈশিষ্ট্য উপস্থাপন করেছে, যা বিকাশকারীদের এই ইন্টারফেসের বিদ্যমান বাস্তবায়ন ভঙ্গ না করে ইন্টারফেসগুলিতে নতুন পদ্ধতি যুক্ত করতে দেয়। এটি ইন্টারফেসটিকে সংজ্ঞায়িত প্রয়োগের অনুমোদনের জন্য নমনীয়তা দেয় যা এমন পরিস্থিতিতে ডিফল্ট হিসাবে ব্যবহার করবে যেখানে কোনও কংক্রিট শ্রেণি সেই পদ্ধতির জন্য কোনও প্রয়োগ প্রদান করতে ব্যর্থ হয়।
public interface A {
default void foo(){
System.out.println("Calling A.foo()");
}
}
public class ClassAB implements A {
}
একটি সাধারণ প্রশ্ন রয়েছে যে লোকেরা যখন প্রথমবারের জন্য নতুন বৈশিষ্ট্যটি শুনতে পায় তখন তারা ডিফল্ট পদ্ধতিগুলি সম্পর্কে জিজ্ঞাসা করে:
যদি শ্রেণি দুটি ইন্টারফেস প্রয়োগ করে এবং উভয় ইন্টারফেস একই স্বাক্ষরের সাথে একটি ডিফল্ট পদ্ধতি সংজ্ঞায়িত করে তবে কী হবে?
এই পরিস্থিতি চিত্রিত করার উদাহরণ:
public interface A {
default void foo(){
System.out.println("Calling A.foo()");
}
}
public interface B {
default void foo(){
System.out.println("Calling B.foo()");
}
}
public class ClassAB implements A, B {
}
এই কোডটি নিম্নলিখিত ফলাফলগুলি সংকলন করতে ব্যর্থ হয়েছে:
java: class Clazz inherits unrelated defaults for foo() from types A and B
এটি ঠিক করার জন্য, ক্লাজে, আমাদের বিরোধী পদ্ধতিটি ওভাররাইড করে ম্যানুয়ালি এটি সমাধান করতে হবে:
public class Clazz implements A, B {
public void foo(){}
}
তবে কী যদি আমরা আমাদের নিজস্ব প্রয়োগের পরিবর্তে ইন্টারফেস এ থেকে পদ্ধতি foo () এর ডিফল্ট প্রয়োগকরণ বলতে চাই call
নিম্নলিখিত হিসাবে A # foo () উল্লেখ করা সম্ভব:
public class Clazz implements A, B {
public void foo(){
A.super.foo();
}
}