آموزش رایگان صفر تا صد جاوا (Java) به زبان ساده
-
معرفی جاوا
-
ساخت اولین برنامه: Hello World
-
چاپ متن در جاوا
-
چاپ عدد در جاوا
-
نظرات (Comments) در جاوا
-
متغیرها جاوا
-
نمایش متغیرها (Display Variables) در جاوا
-
تعریف چند متغیر در جاوا (Java)
-
شناسایی متغیرها (Identifiers)
-
معرفی متغیرها با مثالهای واقعی
-
آشنایی با انواع دادهها (Data Types) در جاوا
-
آشنایی با اعداد (Numbers) در جاوا
-
آشنایی با نوع داده بولین (Boolean)
-
کار با کاراکترها و رشتهها در جاوا (Characters and Strings in Java)
-
مثال واقعی برای استفاده از انواع داده در جاوا
-
آشنایی با انواع دادههای غیرابتدایی (Non-Primitive Data Types)
-
آموزش مفهوم Type Casting در جاوا
-
آموزش عملگرها (Operators) در جاوا
-
آشنایی با رشتهها (Strings) در جاوا
-
آشنایی با الحاق رشتهها (String Concatenation)
-
اضافه کردن اعداد و رشتهها در جاوا
-
رشتهها و کاراکترهای خاص در جاوا
-
آشنایی با کلاس Math در جاوا
-
آشنایی با Boolean در جاوا
-
آشنایی با شرطها (Conditions) و دستورات شرطی (If Statements) در جاوا
-
آشنایی با دستور else در برنامهنویسی
-
آموزش عبارت else if در برنامهنویسی
-
آشنایی با عملگر شرطی کوتاه در جاوا (Ternary Operator)
-
آموزش شرطها (If..Else) در برنامهنویسی با مثالهای واقعی
-
آشنایی با Switch Statement در جاوا
-
آشنایی با حلقه While در جاوا
-
حلقه Do/While در جاوا
-
آشنایی با حلقه For در جاوا
-
حلقههای تودرتو (Nested Loops) در جاوا
-
حلقه For-Each در جاوا
-
آموزش دستورات Break و Continue در جاوا
-
آشنایی با آرایهها در جاوا (Java Arrays)
-
آموزش ساده استفاده از حلقهها برای پیمایش آرایهها در جاوا (Java Arrays Loop)
-
آرایههای چندبعدی در جاوا (Java Multi-Dimensional Arrays)
-
معرفی متدها در جاوا (Java Methods)
-
آموزش ساده: پارامترها و آرگومانها در متدهای جاوا (Java Method Parameters)
-
مفهوم بازگشت مقدار در جاوا (Java Return)
-
روش بارگذاری مجدد متدها در جاوا (Java Method Overloading)
-
آشنایی با محدوده متغیرها در جاوا (Java Scope)
-
بازگشت در جاوا (Java Recursion)
-
آشنایی با برنامهنویسی شیءگرا (Object-Oriented Programming یا OOP)
-
برنامهنویسی شیءگرا در جاوا (Java Classes/Objects)
-
آشنایی با ویژگیهای کلاس در جاوا (Java Class Attributes)
-
متدها در جاوا (Java Methods)
-
Constructor در جاوا
-
آشنایی با Modifiers در جاوا (Java Modifiers)
-
مفهوم کپسولهسازی (Encapsulation) در جاوا
-
راهنمای جامع پکیجها (Packages) و API در جاوا
-
وراثت (Inheritance) در جاوا – ساده و قابل فهم
-
پلیمورفیسم (Polymorphism) در جاوا به زبان ساده
-
کلاسهای داخلی (Inner Classes) در جاوا
-
کلاسها و متدهای انتزاعی (Abstract Classes and Methods) در جاوا
-
رابطها (Interfaces) در جاوا
-
آشنایی با Enum در جاوا
-
دریافت ورودی از کاربر در جاوا (Scanner)
-
تاریخ و زمان در جاوا (Java Date and Time)
-
آشنایی با ArrayList در جاوا
-
آشنایی با LinkedList در جاوا
-
مرتبسازی لیست در جاوا (Java List Sorting)
-
آشنایی با HashMap در جاوا
-
آشنایی با HashSet در جاوا
-
آشنایی با Iterator در جاوا
-
کلاسهای بستهبندی (Wrapper Classes) در جاوا
-
استفاده از try...catch برای مدیریت خطاها
-
آشنایی با عبارات منظم (Regular Expressions) در جاوا
-
آشنایی با Threads در جاوا 🚀
-
آشنایی با Lambda Expressions در جاوا
-
مرتبسازی پیشرفته در جاوا
-
آشنایی با کلمه کلیدی assert در جاوا
-
آشنایی با کلمه کلیدی abstract در جاوا
-
آشنایی با کلمه کلیدی boolean در جاوا
-
آشنایی با کلمه کلیدی break در جاوا
-
آشنایی با کلمه کلیدی byte در جاوا
-
آشنایی با کلمه کلیدی case در جاوا
-
آشنایی با کلمه کلیدی catch در جاوا
-
آشنایی با کلمه کلیدی char در جاوا
-
آشنایی با کلمه کلیدی class در جاوا
-
آشنایی با کلمه کلیدی continue در جاوا
-
آشنایی با کلمه کلیدی default در جاوا
-
آشنایی با کلمه کلیدی do در جاوا
-
آشنایی با کلمه کلیدی double در جاوا
-
آشنایی با کلمه کلیدی else در جاوا
-
آشنایی با کلمه کلیدی enum در جاوا
-
آشنایی با کلمه کلیدی exports در جاوا
-
آشنایی با کلمه کلیدی Inheritance در جاوا
-
آشنایی با کلمه کلیدی final در جاوا
-
آشنایی با کلمه کلیدی finally در جاوا
-
آشنایی با کلمه کلیدی float در جاوا
-
آشنایی با کلمه کلیدی for در جاوا
-
آشنایی با کلمه کلیدی if در جاوا
-
آشنایی با کلمه کلیدی implements در جاوا
-
آشنایی با کلمه کلیدی import در جاوا
-
آشنایی با کلمه کلیدی instanceof در جاوا
-
آشنایی با کلمه کلیدی int در جاوا
-
آشنایی با کلمه کلیدی Interface در جاوا
-
آشنایی با کلمه کلیدی long در جاوا
-
آشنایی با کلمه کلیدی module در جاوا
-
آشنایی با کلمه کلیدی native در جاوا
-
آشنایی با کلمه کلیدی new در جاوا
-
آشنایی با کلمه کلیدی package در جاوا
-
آشنایی با کلمه کلیدی private در جاوا
-
آشنایی با کلمه کلیدی protected در جاوا
-
آشنایی با کلمه کلیدی public در جاوا
-
آشنایی با کلمه کلیدی return در جاوا
-
آشنایی با کلمه کلیدی requires در جاوا
-
آشنایی با کلمه کلیدی short در جاوا
-
آشنایی با کلمه کلیدی static در جاوا
-
آشنایی با کلمه کلیدی super در جاوا
-
آشنایی با کلمه کلیدی switch در جاوا
-
آشنایی با کلمه کلیدی synchronized در جاوا
-
آشنایی با کلمه کلیدی this در جاوا
-
آشنایی با کلمه کلیدی throw در جاوا
-
آشنایی با کلمه کلیدی throws در جاوا
-
آشنایی با کلمه کلیدی transient در جاوا
-
آشنایی با کلمه کلیدی try...catch در جاوا
-
آشنایی با کلمه کلیدی var در جاوا
-
آشنایی با کلمه کلیدی void در جاوا
-
آشنایی با کلمه کلیدی volatile در جاوا
-
آشنایی با کلمه کلیدی while در جاوا
-
متد charAt() در جاوا
-
متد codePointAt() در جاوا
-
متد codePointBefore() در جاوا
-
متد codePointCount() در جاوا
-
متد compareTo() در جاوا
-
متد compareToIgnoreCase() در جاوا
-
متد concat() در جاوا
-
متد contains() در جاوا
-
متد contentEquals() در جاوا
-
متد copyValueOf() در جاوا
-
متد endsWith() در جاوا
-
متد equals() در جاوا
-
متد equalsIgnoreCase() در جاوا
-
متد format() در جاوا
-
متد getBytes() در جاوا
-
متد getChars() در جاوا
-
متد hashCode() در جاوا
-
متد indexOf() در جاوا
-
متد isEmpty() در جاوا
-
متد join() در جاوا
-
متد lastIndexOf() در جاوا
-
متد length() در جاوا
-
متد matches() در جاوا
-
متد offsetByCodePoints() در جاوا
-
متد regionMatches() در جاوا
-
متد replace() در جاوا
-
متد replaceAll() در جاوا
-
متد replaceFirst() در جاوا
-
متد split() در جاوا
-
متد startsWith() در جاوا
-
متد subSequence() در جاوا
-
متد substring() در جاوا
-
متد toCharArray() در جاوا
-
متد toLowerCase() در جاوا
-
متد toString() در جاوا
-
متد toUpperCase() در جاوا
-
متد trim() در جاوا
-
متد valueOf() در جاوا
-
متد abs() در جاوا
-
متد acos() در جاوا
رابطها (Interfaces) در جاوا
در جاوا، رابطها (Interfaces) یکی از روشهای انتزاع (Abstraction) هستند. رابطها شبیه کلاسهای انتزاعی (Abstract Classes) هستند اما تفاوت اصلی آنها این است که همه متدهای موجود در یک رابط، بدون بدنه (بدون پیادهسازی) هستند.
۱. تعریف یک رابط
رابطها در جاوا گروهی از متدهای مرتبط هستند که هیچکدام از آنها بدنهای ندارند. به عبارت دیگر، فقط امضای متدها در آن مشخص میشود و پیادهسازی آنها بر عهده کلاسهایی است که این رابط را “پیادهسازی (Implement)” میکنند.
مثال: تعریف یک رابط در جاوا
// تعریف یک رابط (Interface)
interface Animal {
public void animalSound(); // متدی بدون بدنه
public void run(); // متدی بدون بدنه
}
در این مثال، یک رابط به نام Animal
تعریف شده که دو متد animalSound()
و run()
دارد اما هیچکدام بدنهای ندارند.
۲. پیادهسازی یک رابط در کلاسها
برای استفاده از متدهای یک رابط، باید یک کلاس، آن رابط را “پیادهسازی (Implement)” کند. این کار با استفاده از کلمهکلیدی implements
انجام میشود. وقتی یک کلاس یک رابط را پیادهسازی میکند، باید تمام متدهای آن رابط را تعریف کند.
مثال: پیادهسازی رابط Animal
در کلاس Pig
// تعریف رابط
interface Animal {
public void animalSound(); // بدون بدنه
public void sleep(); // بدون بدنه
}
// کلاس Pig که رابط Animal را پیادهسازی میکند
class Pig implements Animal {
public void animalSound() {
System.out.println("The pig says: wee wee");
}
public void sleep() {
System.out.println("Zzz");
}
}
// کلاس اصلی برای اجرای برنامه
class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // ایجاد یک شیء از کلاس Pig
myPig.animalSound();
myPig.sleep();
}
}
📌 خروجی برنامه:
The pig says: wee wee
Zzz
نکات مهم:
✅ نمیتوان از یک رابط، مستقیماً شیء ایجاد کرد. (یعنی Animal myAnimal = new Animal();
مجاز نیست.)
✅ هر کلاسی که یک رابط را پیادهسازی کند، باید تمام متدهای آن رابط را پیادهسازی کند.
✅ متدهای رابط بهصورت پیشفرض public
و abstract
هستند، بنابراین نیاز نیست آنها را بهطور صریح public abstract
تعریف کنیم.
✅ متغیرهای رابط بهطور پیشفرض public
، static
و final
هستند.
✅ رابطها سازنده (Constructor) ندارند، زیرا نمیتوان از آنها شیء ساخت.
۳. چرا و چه زمانی باید از رابطها استفاده کنیم؟
✔ افزایش امنیت: برخی جزئیات را پنهان میکنیم و فقط اطلاعات مهم را نمایش میدهیم.
✔ حل مشکل وراثت چندگانه: در جاوا، یک کلاس فقط میتواند از یک کلاس دیگر ارثبری (extends
) کند، اما میتواند چندین رابط (implements
) را پیادهسازی کند.
۴. پیادهسازی چندین رابط در یک کلاس
در جاوا، یک کلاس میتواند چندین رابط را همزمان پیادهسازی کند. برای این کار، نام رابطها را با کاما (,
) از هم جدا میکنیم.
مثال: پیادهسازی دو رابط در یک کلاس
// تعریف دو رابط
interface FirstInterface {
public void myMethod(); // متد بدون بدنه
}
interface SecondInterface {
public void myOtherMethod(); // متد بدون بدنه
}
// کلاس DemoClass که هر دو رابط را پیادهسازی میکند
class DemoClass implements FirstInterface, SecondInterface {
public void myMethod() {
System.out.println("Some text..");
}
public void myOtherMethod() {
System.out.println("Some other text...");
}
}
// کلاس اصلی
class Main {
public static void main(String[] args) {
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}
📌 خروجی برنامه:
Some text..
Some other text...
مزیت این روش:
✅ امکان ترکیب ویژگیهای چندین رابط در یک کلاس، بدون نیاز به وراثت چندگانه.
تمرینها برای درک بهتر
✅ تمرین ۱: یک رابط Vehicle
تعریف کن که دو متد startEngine()
و stopEngine()
داشته باشد. سپس یک کلاس Car
بساز که این رابط را پیادهسازی کند و پیامهای مناسب را در متدها چاپ کند.
✅ تمرین ۲: یک رابط Playable
تعریف کن که متدی به نام play()
داشته باشد. سپس دو کلاس Guitar
و Piano
بساز که این رابط را پیادهسازی کنند و پیامی مناسب در متد play()
نمایش دهند.
✅ تمرین ۳: چه تفاوتی بین رابط (Interface) و کلاس انتزاعی (Abstract Class) وجود دارد؟ پاسخ خود را با مثال توضیح دهید.
🔹 خلاصه کلی
- رابطها (Interfaces) در جاوا، گروهی از متدهای بدون بدنه هستند.
- یک کلاس برای استفاده از یک رابط، باید از کلمهکلیدی
implements
استفاده کند و تمام متدهای آن را پیادهسازی کند. - رابطها نمیتوانند شیء بسازند و نمیتوانند متغیر معمولی یا سازنده (Constructor) داشته باشند.
- یک کلاس میتواند چندین رابط را همزمان پیادهسازی کند که این ویژگی در جاوا به جای وراثت چندگانه استفاده میشود.