ইন্টারফেস জাভাতে একটি রেফারেন্স টাইপ। এটি ক্লাসের মতো। এটি অ্যাবস্ট্রাক্ট মেথডের একটি সংকলন। একটি ক্লাস ইন্টারফেস ইমপ্লিমেন্ট করে, जिससे ইন্টারফেসের অ্যাবস্ট্রাক্ট মেথডগুলো উত্তরাধিকারসূত্রে পায়।
অ্যাবস্ট্রাক্ট মেথডের পাশাপাশি, একটি ইন্টারফেসে কনস্ট্যান্ট, ডিফল্ট মেথড, স্ট্যাটিক মেথড এবং নেস্টেড টাইপও থাকতে পারে। মেথড বডি শুধু ডিফল্ট মেথড এবং স্ট্যাটিক মেথডের জন্য থাকে।
ইন্টারফেস লেখা ক্লাস লেখার মতো। কিন্তু একটি ক্লাস একটি অবজেক্টের অ্যাট্রিবিউট এবং আচরণ বর্ণনা করে। আর একটি ইন্টারফেস সেই আচরণগুলো ধারণ করে যা একটি ক্লাস ইমপ্লিমেন্ট করে।
যদি না ক্লাসটি অ্যাবস্ট্রাক্ট হয়, ইন্টারফেসের সব মেথড ক্লাসে ডিফাইন করা আবশ্যক।
ইন্টারফেস ক্লাসের সাথে নিচের বিষয়গুলোতে মিল রয়েছে:
- ইন্টারফেস যেকোনো সংখ্যক মেথড ধারণ করতে পারে।
- ইন্টারফেস একটি
.javaএক্সটেনশনযুক্ত ফাইলে লেখা হয়, ফাইলের নাম ইন্টারফেসের নামের সাথে মিলে থাকে। - ইন্টারফেসের বাইটকোড
.classফাইলে থাকে। - ইন্টারফেস প্যাকেজে থাকে এবং তাদের বাইটকোড ফাইল ডিরেক্টরি স্ট্রাকচারে থাকতে হবে যা প্যাকেজের নামের সাথে মিলে যাবে।
তবে, ইন্টারফেস ক্লাস থেকে অনেক বিষয়ে আলাদা:
- আপনি একটি ইন্টারফেস ইনস্ট্যানশিয়েট করতে পারবেন না।
- ইন্টারফেসে কোনো কনস্ট্রাক্টর নেই।
- ইন্টারফেসের সব মেথড অ্যাবস্ট্রাক্ট।
- ইন্টারফেসে ইনস্ট্যান্স ফিল্ড থাকতে পারে না। ইন্টারফেসে যে ফিল্ডগুলো থাকতে পারে সেগুলো অবশ্যই
staticএবংfinalঘোষণা করতে হবে। - একটি ইন্টারফেস ক্লাস দ্বারা এক্সটেন্ড করা হয় না; এটি ক্লাস দ্বারা ইমপ্লিমেন্ট করা হয়।
- একটি ইন্টারফেস একাধিক ইন্টারফেস এক্সটেন্ড করতে পারে।
ইন্টারফেস ডিক্লেয়ার করা
interface কীওয়ার্ড ব্যবহার করে ইন্টারফেস ডিক্লেয়ার করা হয়। ইন্টারফেস ডিক্লেয়ার করার একটি সিম্পল উদাহরণ:
উদাহরণ
নিচে একটি ইন্টারফেসের উদাহরণ দেওয়া হল:
/* File name : NameOfInterface.java */
import java.lang.*; // Any number of import statements
public interface NameOfInterface {
// Any number of final, static fields
// Any number of abstract method declarations
}