درخواست های ارتباط
جستجو
    لیست دوستان من
    صندوق پیام
    همه را دیدم
    • در حال دریافت لیست پیام ها
    صندوق پیام
    رویدادها
    همه را دیدم
    • در حال دریافت لیست رویدادها
    همه رویدادهای من

    تا 75 درصد تخفیف ویژه شب یلدا بر روی کلیه محصولات وب سایت توسینسو فقط تا 30 آذر

    مانده تا پایان تخفیف ها

    تخفیف های وب سایت
    همه تخفیف ها

    عضویت در

    کانال تلگرام

    توسینسو

    اطلاعات مطلب
      مدرس/نویسنده
      مهدی عادلی فر
      امتیاز: 144149
      رتبه:6
      117
      196
      285
      1466
      مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم. پروفایل کاربر
      دوره های مرتبط
      دوره های توسینسو دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 27 قسط خریداری کنید
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      مدرس: ایمان جوادی
      این دوره را در 13 قسط خریداری کنید
      دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 17 قسط خریداری کنید
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 78 قسط خریداری کنید
      دوره آموزشی طراحی رابط کاربری با JavaFX
      دوره آموزشی طراحی رابط کاربری با JavaFX
      مدرس: حسام رسولیان
      این دوره را در 13 قسط خریداری کنید
      دوره متوسطه برنامه نویسی به زبان جاوا به زبان ساده
      دوره متوسطه برنامه نویسی به زبان جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 18 قسط خریداری کنید
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      مدرس: مهدی عادلی فر
      این دوره را در 2 قسط خریداری کنید
      دوره آموزشی ساخت ربات تلگرام
      دوره آموزشی ساخت ربات تلگرام
      مدرس: کاظم تقندیکی
      این دوره را در 8 قسط خریداری کنید
      دوره آموزشی Exploit نویسی به زبان Perl
      دوره آموزشی Exploit نویسی به زبان Perl
      مدرس: ایمان جوادی
      این دوره را در 7 قسط خریداری کنید
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      مدرس: کاظم تقندیکی
      این دوره را در 20 قسط خریداری کنید
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 11 قسط خریداری کنید
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 17 قسط خریداری کنید
      دوره آموزشی برنامه نویسی مقدماتی پایتون به زبان ساده
      دوره آموزشی برنامه نویسی مقدماتی پایتون به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 23 قسط خریداری کنید
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      مدرس: کاظم تقندیکی
      این دوره را در 11 قسط خریداری کنید
      دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      مدرس: امیر حسین فضلیخانی
      این دوره را در 12 قسط خریداری کنید

      آموزش برنامه نویسی جاوا قسمت سی و پنجم: معرفی و شرح چند ریختی (polymorphism)

      تاریخ 32 ماه قبل
      نظرات 0
      بازدیدها 1408
      با سلام به همه دوستان و همراهان Itpro. در این مطلب قصد داریم که در مورد چندریختی یا polymorphism صحبت کنیم. چندریختی یکی از قابلیت های شئ است که می تواند چندین فرم یا چندین شکل داشته باشد. بیشترین استفاده از چندریختی در برنامه نویسی شئ گرا زمانی است که یک شئ از کلاس پدر ایجاد کنیم ولی آن را با کلاس های فرزندان مقداردهی نماییم. هر شئ جاوا که از کلاسی ساخته شده باشد به گونه ای که آن کلاس حد اقل دو کلاس فرزند داشته باشد که با کلاس پدر رابطه IS-A داشته باشد قابلیت چندریختی را می تواند داشته باشد. در زبان جاوا همه ی اشیاء قابلیت چندریختی و یا polymorphism را دارد. دلیل این ادعا این است که همه ی کلاس های تعریف شده در جاوا از کلاس Object ارث بری کرده اند و با آن کلاس خاصیت Is-A دارند. به یاد داشته باشید که تنها راه دسترسی به یک شئ این است که یک متغیر از کلاس آن بسازیم. متغیری که ساخته می شود دارای یک نوع خاص است. به یاد داشته باشید که اگر یک متغیر را در جاوا تعریف کرده باشیم دیگر نمی توانیم نوع آن متغیر را تغییر بدهیم. اگر یک متغیر به صورت final تعریف نشده باشد می توان شیئی را که در آن ریخته شده است را تغییر داد و یک شئ دیگر را در درون آن ریخت. نوع متغیری که متغیر از آن ساخته شده است مشخص می کند که چه متدهایی را می توانیم فراخوانی کنیم. می توان هر شیئی را که از نوع متغیر است را در داخل یک متغیر ریخت همچنین می توان هر شیئی که از یک کلاس که کلاس فرزند نوع تعریف شده متغیر است را نیز داخل متغیر ریخت (یا خدا خودمم به سختی فهمیدم این جمله رو :D) یک متغیر را می توان از نوع کلاس یا اینترفیس معرفی کرد. برای مثال به کد زیر توجه نمایید.
      public interface Vegetarian{}
      public class Animal{}
      public class Deer extends Animal implements Vegetarian{}
      
      
      با توجه به مثال بالا می توان گفت که کلاس Deer چند وراثت دارد پس می تواند چندریخت باشد. با توجه به کد بالا مفاهیم زیر درست است
      • یک Deer یک Animal است و با آن رابطه IS-A با آن دارد.
      • Deer یک Vegetarian است و با آن ارتباط IS-A دارد.
      • Deer یک Deer است و با آن ارتباط Is-A دارد.
      • Deer یک Object است و با آن ارتباط Is-A دارد.
      بنابراین با توجه به کدهای بالا مفاهیم بالا را به شکل زیر در جاوا بیان می کنیم.
      Deer d = new Deer();
      Animal a = d;
      Vegetarian v = d;
      Object o = d;
      
      
      همه ی اعمال بالا در جاوا مجاز بوده و به شئ d در برنامه اشاره می کنند. این عمل چندریختی و یا polymorphism نام دارد.

      متدهای virtual


      در این بخش نشان می دهیم که چگونه متدهای override شده می توانند در چندریختی تاثیر داشته باشد و چندریختی را با متدهای override شده پیاده سازی نمود و چگونه از آنها در طراحی کلاس ها استفاده کرد. ما در مطالب قبلی در مورد override کردن متد ها صحبت کرده ایم و گفته ایم که چگونه یک متد را override می کنیم. اگر متدی در کلاس پدر باشد و همان متد در کلاس فرزند override شده باشد بنابراین متدی که در کلاس پدر است به کار نمی رود و فراخوانی نمی شود مگر این که در متد کلاس فرزند از کلمه کلیدی super استفاده شود. برای مثال به کد زیر توجه کنید:
      /* File name : Employee.java */
      public class Employee
      {
         private String name;
         private String address;
         private int number;
         public Employee(String name, String address, int number)
         {
            System.out.println("Constructing an Employee");
            this.name = name;
            this.address = address;
            this.number = number;
         }
         public void mailCheck()
         {
            System.out.println("Mailing a check to " + this.name
             + " " + this.address);
         }
         public String toString()
         {
            return name + " " + address + " " + number;
         }
         public String getName()
         {
            return name;
         }
         public String getAddress()
         {
            return address;
         }
         public void setAddress(String newAddress)
         {
            address = newAddress;
         }
         public int getNumber()
         {
           return number;
         }
      }
      
      
      حال در کد زیر از کلاس Employee به شکل زیر ارث بری می کنیم.
      /* File name : Salary.java */
      public class Salary extends Employee
      {
         private double salary; //Annual salary
         public Salary(String name, String address, int number, double
            salary)
         {
             super(name, address, number);
             setSalary(salary);
         }
         public void mailCheck()
         {
             System.out.println("Within mailCheck of Salary class ");
             System.out.println("Mailing check to " + getName()
             + " with salary " + salary);
         }
         public double getSalary()
         {
             return salary;
         }
         public void setSalary(double newSalary)
         {
             if(newSalary >= 0.0)
             {
                salary = newSalary;
             }
         }
         public double computePay()
         {
            System.out.println("Computing salary pay for " + getName());
            return salary/52;
         }
      }
      
      حال کد زیر با دقت بخوانید و سعی کنید خروجی برنامه را حدس بزنید.
      /* File name : VirtualDemo.java */
      public class VirtualDemo
      {
         public static void main(String [] args)
         {
            Salary s = new Salary("Mohd Mohtashim", "Ambehta, UP", 3, 3600.00);
            Employee e = new Salary("John Adams", "Boston, MA", 2, 2400.00);
            System.out.println("Call mailCheck using Salary reference --");
            s.mailCheck();
            System.out.println("\n Call mailCheck using Employee reference--");
            e.mailCheck();
          }
      }
      
      خروجی برنامه به شکل زیر خواهد بود:
      Constructing an Employee
      Constructing an Employee
      Call mailCheck using Salary reference --
      Within mailCheck of Salary class
      ailing check to Mohd Mohtashim with salary 3600.0
      
      Call mailCheck using Employee reference--
      Within mailCheck of Salary class
      ailing check to John Adams with salary 2400.0
      
      در این کد ما دو متغیر از کلاس Salary معرفی کرده ایم. یکی برای این که شئ Salary در داخل آن قرار بگیرد که نام آن s می باشد و دیگری یک شئ از کلاس Employee در درون آن قرار می گیرد و نام آن e می باشد. هنگامی که متد
      s.mailCheck()
      
      را فراخوانی می کنیم. کامپایلر متد mailCheck در درون کلاس Salary را اجرا می کند ولی زمانی که متد mailCheck را از شئ e را فراخوانی می کنیم با این که باید متد مربوط به Employee را اجرا کند ولی نتیجه متفاوت می گیریم و دلیل آن این است که متد mailCheck مربوط به کلاس Salary اجرا خواهد شد. در جاوا همه ی متدها این قابلیت را دارند که override شوند و به این رفتار فراخوانی متدهای virtual گفته می شود.Itpro باشید


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

      برچسب ها
      ردیفعنوان
      1آموزش برنامه نویسی جاوا قسمت اول : معرفی ویژگیها ، خصوصیات و نحوه شروع به کار با زبان برنامه نویسی جاوا
      2 آموزش برنامه نویسی جاوا قسمت دوم : بررسی مفاهیم شیء ، کلاس ، Method و شروع برنامه نویسی با زبان جاوا
      3آموزش برنامه نویسی جاوا قسمت سوم: معرفی مفاهیم اولیه و مفاهیم شی گرایی در برنامه نویسی جاوا
      4آموزش برنامه نویسی جاوا قسمت چهارم: معرفی مفاهیم شی گرایی در برنامه نویسی جاوا - ادامه
      5آموزش برنامه نویسی جاوا قسمت پنجم: معرفی انواع داده ها در جاوا
      6آموزش برنامه نویسی جاوا قسمت ششم: آموزش انواع متغیر در جاوا
      7آموزش برنامه نویسی جاوا قسمت هفتم: معرفی Modifierها در جاوا
      8آموزش برنامه نویسی جاوا قسمت هشتم: معرفی و آموزش عملگرهای جاوا
      9آموزش برنامه نویسی جاوا قسمت نهم: معرفی و آموزش کار با عملگرها در جاوا - ادامه
      10 آموزش برنامه نویسی جاوا قسمت دهم: کار با حلقه های تکرار در جاوا
      11 آموزش برنامه نویسی جاوا قسمت یازدهم: معرفی و آموزش استفاده از عبارات شرطی در جاوا
      12 آموزش برنامه نویسی جاوا قسمت دوازدهم: معرفی انواع کلاس wrapper مربوط به اعداد در جاوا و نحوه استفاده از آنها
      13 آموزش برنامه نویسی جاوا قسمت سیزدهم: معرفی انواع کلاس wrapper مربوط به اعداد در جاوا و نحوه استفاده از آنها -ادمه
      14 آموزش برنامه نویسی جاوا قسمت چهاردهم: معرفی و نحوه استفاده از کلاس Wrapper مربوط به کاراکتر ها در جاوا
      15 آموزش برنامه نویسی جاوا قسمت پانزدهم: معرفی و آموزش نحوه استفاده از کلاس String و کار با رشته ها در جاوا
      16 آموزش برنامه نویسی جاوا قسمت شانزدهم: معرفی و آموزش نحوه استفاده از کلاس String در جاوا و کار با رشته ها در جاوا ادامه
      17 آموزش برنامه نویسی جاوا قسمت هفدهم: معرفی و آموزش نحوه استفاده از کلاس String در جاوا و کار با رشته ها در جاوا-ادامه 2
      18 آموزش برنامه نویسی جاوا قسمت هجدهم: معرفی و آموزش نحوه استفاده از کلاس String در جاوا و کار با رشته ها در جاوا-ادامه 3
      19 آموزش برنامه نویسی جاوا قسمت نوزدهم: معرفی و آموزش نحوه استفاده از کلاس های StringBuilder و StringBuffer
      20آموزش برنامه نویسی جاوا قسمت بیستم: معرفی و آموزش نحوه استفاده از آرایه ها
      21آموزش برنامه نویسی جاوا قسمت بیست و یکم: آموزش کار با تاریخ
      22آموزش برنامه نویسی جاوا قسمت بیست و دوم: معرفی و آموزش عبارات منظم(Regular expression)
      23آموزش برنامه نویسی جاوا قسمت بیست و سوم: نحوه تعریف و استفاده از متدها
      24آموزش برنامه نویسی جاوا قسمت بیست و چهارم: نحوه تعریف و استفاده از متدها- ادامه
      25آموزش برنامه نویسی جاوا قسمت بیست و پنجم: نحوه کار با استریم ها و فایل ها
      26آموزش برنامه نویسی جاوا قسمت بیست و ششم: نحوه کار با دایرکتوری ها
      27آموزش برنامه نویسی جاوا قسمت بیست و هفتم: معرفی و آموزش کلاس ByteArrayInputStream و کار با استریم ها
      28آموزش برنامه نویسی جاوا قسمت بیست و هشتم: معرفی کلاس File و شرح متدهای آن
      29 آموزش برنامه نویسی جاوا قسمت بیست و نهم: معرفی و شرح Exception ها
      30 آموزش برنامه نویسی جاوا قسمت سی ام: معرفی و شرح Exception ها- ادامه
      31 آموزش برنامه نویسی جاوا قسمت سی و یکم: معرفی و شرح Exception ها- ادامه 2
      32 آموزش برنامه نویسی جاوا قسمت سی و دوم: معرفی و شرح استفاده از انوع کلاس های داخلی
      33 آموزش برنامه نویسی جاوا قسمت سی و سوم: شرح وراثت کلاس ها و انواع آن
      34 آموزش برنامه نویسی جاوا قسمت سی و چهارم: معرفی و شرح override کردن متد ها
      35 آموزش برنامه نویسی جاوا قسمت سی و پنجم: معرفی و شرح چند ریختی (polymorphism)
      36 آموزش برنامه نویسی جاوا قسمت سی و ششم: شرح enum و ویژگی های آن
      37 آموزش برنامه نویسی جاوا قسمت سی و هفتم: معرفی و شرح abstract
      38 آموزش برنامه نویسی جاوا قسمت سی و هشتم: معرفی و آموزش نحوه استفاده از کپسول بندی (encapsulation)
      39 آموزش برنامه نویسی جاوا قسمت سی و نهم: معرفی و آموزش نحوه استفاده از اینترفیس ها
      40 آموزش برنامه نویسی جاوا قسمت چهلم: معرفی مفهوم پکیج(package) و نحوه استفاده از آن
      41 آموزش برنامه نویسی جاوا قسمت چهل و یکم: معرفی داده ساختارها - Enumeration
      42آموزش برنامه نویسی جاوا قسمت چهل و دوم: داده ساختار BitSet
      43آموزش برنامه نویسی جاوا قسمت چهل و سوم: داده ساختار Vector
      44آموزش برنامه نویسی جاوا قسمت چهل و چهارم: داده ساختار Stack(پشته)
      45آموزش برنامه نویسی جاوا قسمت چهل و پنجم: داده ساختار dictionary
      46آموزش برنامه نویسی جاوا قسمت چهل و ششم: داده ساختار Hashtable
      47آموزش برنامه نویسی جاوا قسمت چهل و هفتم: داده ساختار properites
      48 آموزش برنامه نویسی جاوا قسمت چهل و هشتم: معرفی و آموزش مفهوم جنریک
      49 آموزش برنامه نویسی جاوا قسمت چهل و نهم: معرفی و آموزش برنامه نویسی سوکت و شبکه سمت سرور
      50 آموزش برنامه نویسی جاوا قسمت پنجاهم: معرفی و آموزش برنامه نویسی سوکت و شبکه- سمت کلاینت و ارتباط با یکدیگر
      51 آموزش برنامه نویسی جاوا قسمت پنجاه و یکم: معرفی و آموزش استفاده از lambda expression
      52آموزش برنامه نویسی جاوا قسمت پنجاه و دوم:‌ معرفی مفاهیم Thread ها و Multi-Threading
      53آموزش برنامه نویسی جاوا قسمت پنجاه و سوم: معرفی و آموزشRunnable در Thread ها و Multi-Threading
      54آموزش برنامه نویسی جاوا قسمت پنجاه و چهارم: کلاس Thread و کار کردن با متدهای این کلاس
      دورهمجموعه کل دوره
      مطالب مرتبط

      در حال دریافت اطلاعات

      نظرات
      هیچ نظری ارسال نشده است

        برای ارسال نظر ابتدا به سایت وارد شوید