آموزش عملگر instanceof در جاوا (به زبان کاملا ساده)

رتبه: 0 ار 0 رای sssss
آموزش عملگر instanceof در جاوا
نویسنده: تیم تولید محتوا زمان مطالعه 5 دقیقه
Banner Image

در این آموزش با کمک مثال با جزئیات عملگر instanceof آشنا می شوید.

در جاوا ، کلمه کلیدی instanceof یک عملگر باینری است. برای بررسی اینکه آیا یک شیء نمونه ای از کلاس خاصی است یا خیر ، استفاده می شود.

این عملگر همچنین بررسی می کند که آیا یک شیء نمونه ای از کلاسی است که یک اینترفیس را پیاده سازی می کند.

ساختار عملگر instanceof به شکل زیر است:

  1. result = objectName instanceof className;

عبارت سمت چپ instanceof نام شی و عبارت سمت راست نام کلاس است. اگر شی نمونه ای از کلاس باشد result صحیح و در غیر اینصورت غلط است.

مثال ۱ : instanceof در جاوا

  1. class Main {
  2. public static void main (String[] args) {
  3. String name = “Programiz”;
  4. Integer age = 22;
  5. System.out.println(“Is name an instance of String: “+ (name instanceof String));
  6. System.out.println(“Is age an instance of Integer: “+ (age instanceof Integer));
  7. }
  8. }

خروجی

Is name an instance of String: true

Is age an instance of Integer: true

در مثال بالا ، ما یک شی nameاز نوع String و یک شی age از نوع Integer ایجاد کردیم. سپس از عملگر instanceof برای بررسی اینکه آیا name از نوع String و age از نوع Integer است استفاده کردیم.

استفاده از instanceof در وراثت

در وراثت ، از عملگر instanceof برای بررسی اینکه آیا یک شی از subclass نمونه ای از superclass است یا خیر استفاده می شود.

مثال ۲ : instanceof در وراثت

  1. class Animal {
  2. }
  3. class Dog extends Animal {
  4. }
  5. class Main {
  6. public static void main(String[] args){
  7. Dog d1 = new Dog();
  8. System.out.println(“Is d1 an instance of Dog: “+ (d1 instanceof Dog));
  9. System.out.println(“Is d1 an instance of Animal: “+ (d1 instanceof Animal));
  10. }
  11. }

خروجی

Is d1 is an instance of Dog: true

Is d1 an instance of Animal: true

در مثال بالا ، d1 نمونه ای از کلاس Dog و Animal است. از این رو ، هر دو d1 instanceof Dog و d1 instanceof Animal برابر با true است.

کلاس شی

در جاوا ، تمام کلاس ها از کلاس Object ارث می برند. کلمه کلیدی extends در ارث بری کلاس Object استفاده نمی شود. این یک استثنا در جاوا است.

مثال ۳ : کلاس شی

  1. class Animal {
  2. }
  3. class Dog {
  4. }
  5. class Cat {
  6. }
  7. class Main {
  8. public static void main(String[] args) {
  9. Dog d1 = new Dog();
  10. Animal a1 = new Animal();
  11. Cat c1 = new Cat();
  12. System.out.println(“Is d1 an instance of the Object class: “+ (d1 instanceof Object));
  13. System.out.println(“Is a1 an instance of the Object class: “+ (a1 instanceof Object));
  14. System.out.println(“Is c1 an instance of the Object class: “+ (c1 instanceof Object));
  15. }
  16. }

خروجی

Is d1 an instance of the Object class: true

Is a1 an instance of the Object class: true

Is c1 an instance of the Object class: true

در مثال بالا ، به ترتیب اشیاء a1 ، d1 و c1 را از کلاس های Animal ، Dog و Cat ایجاد کرده ایم. ما از عملگر instanceof برای بررسی اینکه آیا این اشیاء a1 ، d1 و c1 نیز اشیاء کلاس Object هستند استفاده کرده ایم. نتایج خروجی برای همه true است.

چرب زبان

جاوا، جاوا اسکریپت رو قورت بده! بدون کلاس، سرعت 2 برابر، ماندگاری 3 برابر، پولسازی عالی با توسعه وب، ماشین لرنینگ و ... کتابخانه های پیشرفته جاوا اسکریپت و ... دانلود:

پک کامل جاوا اسکریپت  پک آموزش Node.js  پک React.js

پک کامل جاوا

پک مبانی برنامه نویسی (اختیاری-مکمل)

زیرا کلاس Object ، کلاس root است که در پکیج java.lang تعریف شده است. تمام کلاس های دیگر کلاس های فرزند کلاس Object هستند که سلسله مراتب را در جاوا تشکیل می دهند.

اشیاء upcasting و downcasting

در جاوا ، یک شیء از subclass ممکن است مانند یک شیء از superclass رفتار کند. به این حالت upcasting گفته می شود.

کامپایلر جاوا بطور خودکار upcasting را انجام می دهد.

مثال ۴ : شی upcasting

  1. class Animal {
  2. public void displayInfo() {
  3. System.out.println(“I am an animal.”);
  4. }
  5. }
  6. class Dog extends Animal {
  7. }
  8. class Main {
  9. public static void main(String[] args) {
  10. Dog d1 = new Dog();
  11. Animal a1 = d1;
  12. a1.displayInfo();
  13. }
  14. }

خروجی

I am an animal.

در مثال بالا ، یک شیء d1 از کلاس Dog ایجاد کرده ایم. ما از آن شی d1 برای ایجاد یک شیء a1 از کلاس Animal با upcasting استفاده می کنیم.

کد بدون هیچ مشکلی اجرا می شود. زیرا با استفاده از کامپایلرهای جاوا ، upcasting انجام می شود.

downcasting یک روش معکوس upcasting است.

در مورد upcasting ، یک شیء از superclass مانند یک شی از subclass رفتار می کند. باید صریحا به کامپایلر دستور دهیم تا در جاوا downcast کند.

مثال ۵ : مشکل downcasting شی

  1. class Animal {
  2. }
  3. class Dog extends Animal {
  4. public void displayInfo() {
  5. System.out.println(“I am a dog.”);
  6. }
  7. }
  8. class Main {
  9. public static void main(String[] args) {
  10. Dog d1 = new Dog();
  11. Animal a1 = d1; // Upcasting
  12. Dog d2 = (Dog)a1; // Downcasting
  13. d2.displayInfo();
  14. }
  15. }

وقتی برنامه را اجرا کردیم ، با استثنا ClassCastException روبرو می شویم. بیایید ببینیم چه اتفاقی می افتد.

در اینجا ، ما یک شیء a1 از سوپرکلاس Animal ایجاد کرده ایم. سپس شی a1 را برابر شی d1 از Dog قرار دادیم.

این کار مسئله به وجود آورد زیرا یک شیء a1 از سوپرکلاس Animal ممکن است به زیر کلاس های دیگر نیز رجوع کند. اگر ما یک زیر کلاس دیگر Cat را به همراه Dog ایجاد کرده بودیم Animal ممکن است Cat باشد یا شاید Dog و همین باعث ابهام شود.

برای برطرف کردن این مشکل می توانیم از عملگر instanceof استفاده کنیم.

مثال ۶ : حل downcasting با استفاده از instanceof

  1. class Animal {
  2. }
  3. class Dog extends Animal {
  4. public void displayInfo() {
  5. System.out.println(“I am a dog”);
  6. }
  7. }
  8. class Main {
  9. public static void main(String[] args) {
  10. Dog d1 = new Dog();
  11. Animal a1 = d1; // Upcasting
  12. if (a1 instanceof Dog){
  13. Dog d2 = (Dog)a1; // Downcasting
  14. d2.displayInfo();
  15. }
  16. }
  17. }

خروجی

I am a dog

در مثال بالا ، ما از عملگر instanceof برای بررسی اینکه آیا a1 نمونه ای از کلاس Dog است یا خیر استفاده می کنیم. downcasting فقط وقتی انجام می شود که عبارت Dog a1 instanceof صحیح باشد.

instanceof در اینترفیس

از عملگر instanceof برای بررسی اینکه آیا یک شیء از کلاس نیز نمونه ای از اینترفیس است که در آن کلاس پیاده سازی شده استفاده می شود.

مثال ۷ : instanceof در اینترفیس

  1. interface Animal {
  2. }
  3. class Dog implements Animal {
  4. }
  5. class Main {
  6. public static void main(String[] args) {
  7. Dog d1 = new Dog();
  8. System.out.println(“Is d1 an instance of Animal: “+(d1 instanceof Animal));
  9. }
  10. }

خروجی

Is d1 an instance of Animal: true

در مثال بالا ، ما یک کلاس Dog ایجاد کرده ایم که اینترفیس Animal را پیاده سازی کند.

سپس شیء d1 از کلاس Dog ایجاد می شود. از عملگر instanceof برای بررسی اینکه آیا d1 نیز نمونه ای از اینترفیس Animal است استفاده کرده ایم.

profile name
تیم تولید محتوا

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

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه

دیدگاهتان را بنویسید

1 2 3 4 5

0 نظر درباره «آموزش عملگر instanceof در جاوا (به زبان کاملا ساده)»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید