آموزش برنامه نویسی و مقاله های IT

آموزش برنامه نویسی از مبتدی تا پیشرفته و مقاله های فناوری اطلاعات

آموزش برنامه نویسی و مقاله های IT

آموزش برنامه نویسی از مبتدی تا پیشرفته و مقاله های فناوری اطلاعات

آموزش برنامه نویسی و مقاله های IT

آموزش برنامه نویسی از مبتدی تا پیشرفته در این سایت به کمک جمعی از دوستان برنامه نویس خوش ذوق می باشد.

بایگانی

Abstract متد

پنجشنبه, ۶ ارديبهشت ۱۳۹۷، ۰۹:۳۶ ق.ظ

منبع : سایت اندروید توتاریال 

Abstract

   یعنی خلاصه یا چکیده. فارغ از جزئیات. اقا من به شما میگم برام یک برنامه اندروید بنویس که یک متنی رو چاپ کنه . اصلا برام مهم نیست که شما چطور میخوای اینکارو رو با چندتا متد و تابع انجام بدی. من میخوام در نهایت اون متن رو ببینم.

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

توی Abstract هم نیازی به جزئیات نداره . فقط میشینه یک گوشه میگه اینکارو بکن و اون کارو بکن . Abstract کلاس رو با کلمه کلیدی Abstract میشه شناخت . یک کلاس abstract میتونه متد abstract رو داشته باشه میتونه نداشته باشه و داخلش از متد concrete (غیر abstract) استفاده شده باشه . اما به این نکته توجه کنید که شما از متد abstract تنها در کلاس Abstract میتونید استفاده کنید و غیر از این معنایی نداره . کلاس abstract غیرقابل استفاده است تا زمانی که آن ها را در کلاس های دیگری extend کرده باشیم

بریم یک مثال بزنیم :

// Declaration using abstract keyword
abstract class AbstractDemo{
   // Concrete method: body and braces
   public void myMethod(){
      //Statements here
   }
   // Abstract method: without body and braces 
   abstract public void anotherMethod();
}

توی مثال بالا متد abstract  رو ببینید که بدون بدنه و براکت هستش و متد Concrete دارای بدنه و براکته.

چرا ما به کلاس Abstract  نیاز داریم ؟

 

تابحال شده یک ایده  برنامه نویسی به ذهنتون برسه و بدونید باید چیکار کنید و روال رو میدونید اما نمی دونید چطور اینکار رو بکنید … اینجاس که میایم از کلاس Abstractاستفاده میکنیم.یک مثال دیگه باهم ببینیم :

abstract public class AbstractDemo{
   public void myMethod(){
      System.out.println("Hello");
   }
   abstract public void anotherMethod();
}
public class ConcreteDemo{

   public void anotherMethod() { 
        System.out.print("Abstract method"); 
   }
   public static void main(String args[])
   { 
      //Can't create object of abstract class - error!
      AbstractDemo obj = new AbstractDemo();
      obj.display();
   }
}

بنظرتون خروجی چی میتونه باشه ؟!!

یک مرور کنیم کد های بالا رو : اول اومدیم یک کلاس AbstractDemo  ساختیم که داخلش از دو متد abstract  و concrete استفاده کردیم . و در ادامه یک کلاسConcreteDemo  ساختیم و داخلش فقط متد Concrete ساختیم . و در کلاس اصلی main اومدیم یک نمونه جدید از کلاس AbstractDemo  ساختیم  . سوال پیش میاد؟؟ خوب الان از چه متدی نمونه ساخته میشه ؟!!! اینجاست که برنامه به ما اخطار میده و میگه : آهای خوشگله ، تو نمی تونی از چیزی که کلیات رو تعریف کرده نمونه بسازی . منظورش اینه که از کلاس های abstract  فقط میتونی extend  کنی نه اینکه نمونه بسازی.

حالا اگه نمونه لازم داشتیم چه کنیم ؟

خیلی سادس از قانون ارث بری استفاده میکنیم . میایم یک بچه میسازیم ( subclass ) و extend اش میکنیم از باباش .

به مثال زیر توجه کنید :

abstract class Demo1{
   public void disp1(){
     System.out.println("Concrete method of abstract class");
   }
   abstract public void disp2();
}

class Demo2 extends Demo1{
   /* I have given the body to abstract method of Demo1 class
   It is must if you don't declare abstract method of super class
   compiler would throw an error*/  
   public void disp2()
   {
       System.out.println("I'm overriding abstract method");
   }
   public static void main(String args[]){
       Demo2 obj = new Demo2();
       obj.disp2();
   }
}

توی مثال بالا اول یک کلاس abstract  ساختیم با اسم Demo1  که داخلش دوتا متد وجود داره که اولین متد Concrete  ( همه چیزش واضحه ) و دومین متد abstract  . در ادامه اومدیم یک subclass  ساختیم یعنی Demo2  و ارث بری کردیم از superclass  یعنی Demo1 و حالا در اینجا اومدیم متد   abstract (یا همون متد disp2 )  رو بکار کشیدیم یا بازنویسی یا Overriding کردیم که برامون یک متنی رو چاپ کنه.

حالا در کلاس اصلی  main  ، یک نمونه از Demo2  ساختیم . چون در Demo2 همه چیز مشخصه پس خطایی از ما نخواهد گرفت و درنهایت هم گفتیم که نمونه ایی رو که ساختیم نمایش بده.

منبع : سایت اندروید توتاریال

  • امیر دولت آبادی

Abstract

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی