۱۳۸۹ دی ۲۶, یکشنبه

ارث بری در جاوا ۲

قسمت اول

Abstract انتزاعی

متد ها و کلاس‌ها در جاوا می‌توانند به شکل Abstract اعلان شوند. یک متد Abstract پیاده‌سازی ندارد، و یک کلاس Abstract نمی‌تواند داخل یک شی ساخته شود. با یک مثال این مسأله بهتر درک می‌شود ، ما از کلاس حیوان که پیش از این ساختیم استفاده می کنیم:



public abstract class Animal {

public boolean isAPet = true;

public String owner = “Fred”;



public void sleep() {

System.out.println(“Sleeping”);

}

public void eat() {

System.out.println(“Eating”);

}

}



با این کلاس شما نمی‌توانید از عبارتAnimal a = new Animal(); 0 استفاده کنید زیرا آن abstract است. به هر روی بقیه آن کلاس می‌تواند درست همانند دیگر کلاس‌ها تعریف شود. بجز اکنون ، شما نمی‌توانید هر حیوان ویژه ای را درست کنید، شما به خود و دیگر برنامه نویسان تحمیل می‌کنید که یک حیوان ویژه همانند گربه یا سگ درست کنند.



متدهای abstract گیراترین قسمت ارث بری در جاوا است. متدی می سازید اما داخل آن را از کد پر نمی کنید! در اینجا مثالی است از یک متد abstract که ما آن را به کلاس حیوان اضافه می‌کنیم، متد move :


public abstract class Animal {

public boolean isAPet = true;

public String owner = “Fred”;



public void sleep() {

System.out.println(“Sleeping”);

}

public void eat() {

System.out.println(“Eating”);

}

public abstract void move();

}



توجه: این خیلی مهم است که شما از آکولاد برای متد های abstract استفاده نکنید! همچنین به خاطر داشته باشید که یک سمیکلون در انتها قرار دهید، و چنانچه میدانید کد ها را به طور منظم بنویسید.

بنابر این چه کاری می‌توانید با این متد abstract انجام دهید در صورتی که هیچ چیزی در آن نیست؟ جواب در زیر کلاس قرار دارد. زیرا متد در سوپر کلاس به شکل abstract است و زیر کلاس باید این متد را پیاده‌سازی کند. این بدین معنی است که اکنون زیر کلاس در حال کار است تا تعیین کند کدام کد به متد می‌رود ، و متد در داخل زیر کلاس قرار دارد. اجازه دهید با پیاده‌سازی متد move در هردو کلاس سگ و گربه قدرت این روش را نشان دهیم.



Public class Dog extends Animals {

public void bark () {

System.out.println(“Woof!”) ;

}

public void move() {

System.out.println(“Running”) ;

}

}



public class Cat extends Animal {

public void meow () {

System.out.println(“Meow”) ;

}

public void move () {

System.out.println (“Prancing”);

}

}





اکنون همه حیوانات می‌توانند متد های مشترک داشته باشند اما هنوز آن متد ها را به طور متفاوت اجرا می کنند. توجه کنید که اگر شما متد های abstract را از سوپر کلاس به زیر کلاس پیاده‌سازی نکنید ، زیر کلاس شما یک خطا خواهد داشت. این بدین معنی است که شما باید متد های abstract را پیاده‌سازی کنید.



خب اکنون شما باید سر انجام یک فهم درستی در ارث بری جاوا داشته باشید. اگر هنوز روشن نشده‌اید مشکلی نیست . در مورد کلاس‌های abstract و extend بیشتر بیاموزید. ببینید چه چیز هایی اجازه دارند و چه چیز هایی اجازه ندارند. تلاش کنید از کلاسی ارث ببرید و به کلاس‌های دیگر ارث دهید و ببینید چه رویداد هایی انجام می‌شود. آزمایش بهترین راه یاد‌گیری است، بنا بر این به جلو بروید و تلاش کنید. اگر در مورد این مثال سؤالی داشتید لطفآ به صورت کامنت بپرسید..


لینک انگلیسی English

هیچ نظری موجود نیست: