مفهوم انتزاعی

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
(تغییرمسیر از مفهوم انتزاعی در جاوا)
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Java-menu.jpeg
خانه
متدها در جاوا
کلاس‌ها در جاوا
۱برنامه‌نویسی شیءگرایی
۲کلاس‌ها و اشیاء
۳خاصیت‌های کلاس
۴متدهای کلاس
۵سازنده‌ها
۶Modifier ها
۷کپسوله‌سازی
۸پکیج‌ها
۹ارث بری
۱۰چند ریختی
۱۱کلاس‌های داخلی
۱۲مفهوم انتزاعی
۱۳رابط‌ها
۱۴Enum ها
۱۵دریافت اطلاعات از کاربر
۱۶تاریخ و زمان
۱۷ArrayList
۱۸HashMap
۱۹کلاس‌های Wrapper
۲۰خطاهای جاوا
فایل‌ها در جاوا
مرجع جاوا
مثال‌های جاوا

کلاس ها و متدهای انتزاعی (به انگلیسی: Abstract) در جاوا

انتزاع داده، پروسه پنهان کردن جزئیات اصلی و نمایش تنها اطلاعات ضروری به کاربر است. [۱]

مفهوم انتزاعی می‌تواند در هر دو کلاس انتزاعی (به انگلیسی: abstract class) یا رابط (به انگلیسی: interface) پیاده سازی شود. (شما در مورد رابط‌ها در فصل آینده مطالب بیشتری را خواهید آموخت)

کلمه کلیدی abstract یک modifier از نوع غیردسترسی است که برای کلاس‌ها و متدها استفاده می‌شود:

  • کلاس انتزاعی: یک کلاس محدود شده‌است و از آن نمی‌توان برای ساختن اشیاء استفاده کرد (برای دسترسی به آن می‌بایست کلاسی دیگر آن را ارث بری کند).
  • متد انتزاعی: تنها می‌توان در کلاس انتزاعی از آن استفاده کرد و فاقد بدنه است. بدنه متد توسط کلاس‌های فرزند (که کلاس پدر را ارث بری می‌کنند) فراهم می‌شود.

یک کلاس انتزاعی می‌تواند هر دو متد با قاعده و متد انتزاعی را داشته باشد:

1 abstract class Animal {
2   public abstract void animalSound();
3   public void sleep() {
4     System.out.println("Zzz");
5   }
6 }

در مثال بالا، ساختن شیء از کلاس Animal غیرممکن است:

Animal myObj = new Animal(); // will generate an error

برای دسترسی به کلاس انتزاعی، کلاسی دیگر می‌بایست آن را ارث بری کند. بگذارید کلاس Animal را که در فصل چند ریختی استفاده کردیم را به یک کلاس انتزاعی تبدیل کنیم:

به یاد داشته باشید که ما از کلمه کلیدی extends برای ارث بری از یک کلاس استفاده می‌کنیم.

مثال

 1 // Abstract class
 2 abstract class Animal {
 3   // Abstract method (does not have a body)
 4   public abstract void animalSound();
 5   // Regular method
 6   public void sleep() {
 7     System.out.println("Zzz");
 8   }
 9 }
10 
11 // Subclass (inherit from Animal)
12 class Pig extends Animal {
13   public void animalSound() {
14     // The body of animalSound() is provided here
15     System.out.println("The pig says: wee wee");
16   }
17 }
18 
19 class MyMainClass {
20   public static void main(String[] args) {
21     Pig myPig = new Pig(); // Create a Pig object
22     myPig.animalSound();
23     myPig.sleep();
24   }
25 }


مشاهدهٔ نتیجه

چرا و چه زمانی می‌بایست از کلاس‌ها و متدهای انتزاعی استفاده کرد؟
برای رسیدن به امنیت - مخفی کردن جزئیات اصلی و تنها نمایش جزئیات مهم از یک شیء.

نکته: به مفهوم انتزاعی می‌توان به وسیله رابط‌ها دست یافت که شما مطالب بیشتری را در فصل آینده در مورد رابط‌ها خواهید آموخت.


منابع آموزشی