مفهوم انتزاعی
کلاس ها و متدهای انتزاعی (به انگلیسی: 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 }
برای رسیدن به امنیت - مخفی کردن جزئیات اصلی و تنها نمایش جزئیات مهم از یک شیء.
نکته: به مفهوم انتزاعی میتوان به وسیله رابطها دست یافت که شما مطالب بیشتری را در فصل آینده در مورد رابطها خواهید آموخت.
منابع آموزشی