آموزش کلمه کلیدی super در جاوا (به زبان ساده)

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

در این آموزش با کلمه کلیدی super در جاوا با کمک مثال آشنا می شوید.

کلمه کلیدی super در جاوا در زیر کلاس ها برای دسترسی به اعضای سوپر کلاس (ویژگی ها ، سازنده ها و متد ها) استفاده می شود. قبل از اینکه در موردکلمه کلیدی super بیاموزیم ، حتما در مورد وراثت در جاوا که در آموزش های قبلی توضیح دادیم، مطالعه کنید.

استفاده از کلمه کلیدی super

۱- برای فراخوانی متد های سوپر کلاس که در زیر کلاس قرار دارد.

۲- برای دستیابی به ویژگی ها (فیلد ها) سوپر کلاس اگر هر دو سوپر کلاس و زیر کلاس دارای ویژگی هایی با همین نام باشند.

۳- برای فراخوانی سازنده ی سوپر کلاس بدون آرگومان (پیش فرض) یا سازنده پارامتری به جای سازنده زیر کلاس.

بیایید هر یک از این کاربردها را درک کنیم.

۱- دسترسی به متد های overridden سوپر کلاس

اگر متد هایی هم نام در هر دو سوپر کلاس و زیر کلاس تعریف شود ، متد موجود در زیر کلاس متد سوپر کلاس را نادیده می گیرد که به آن method overriding می گویند.

مثال ۱ : method overriding

  1. class Animal {
  2. // overridden method
  3. public void display(){
  4. System.out.println(“I am an animal”);
  5. }
  6. }
  7. class Dog extends Animal {
  8. // overriding method
  9. @Override
  10. public void display(){
  11. System.out.println(“I am a dog”);
  12. }
  13. public void printMessage(){
  14. display();
  15. }
  16. }
  17. class Main {
  18. public static void main(String[] args) {
  19. Dog dog1 = new Dog();
  20. dog1.printMessage();
  21. }
  22. }

خروجی

I am a dog

در این مثال ، با ساختن شی dog1 از کلاس Dog ، می توانیم متد ()printMessage را صدا بزنیم که متد ()display را اجرا می کند.

از آنجا که ()display در هر دو کلاس تعریف شده است ، متد زیر کلاس Dog متد سوپر کلاس Animal را نادیده می گیرد. از این رو ، ()display زیر کلاس صدا زده می شود.

 دسترسی به متد های overridden سوپر کلاس

اگر متد فراخوانی سوپر کلاس ها فراخوانی شود چه می شود؟

در صورت نیاز به فراخوانی متد display در سوپر کلاس Animal از() super.display استفاده می کنیم.

مثال ۲ : فراخوانی متد سوپر کلاس

  1. class Animal {
  2. // overridden method
  3. public void display(){
  4. System.out.println(“I am an animal”);
  5. }
  6. }
  7. class Dog extends Animal {
  8. // overriding method
  9. @Override
  10. public void display(){
  11. System.out.println(“I am a dog”);
  12. }
  13. public void printMessage(){
  14. // this calls overriding method
  15. display();
  16. // this calls overridden method
  17. super.display();
  18. }
  19. }
  20. class Main {
  21. public static void main(String[] args) {
  22. Dog dog1 = new Dog();
  23. dog1.printMessage();
  24. }
  25. }

خروجی

I am a dog

I am an animal

در اینجا ، چگونگی عملکرد برنامه بالا نشان داده شده است.

 فراخوانی متد display در سوپر کلاس Animal از() super.display استفاده می کنیم.

۲- دسترسی به متد های سوپرکلاس

سوپر کلاس و زیر کلاس می توانند متد های هم نام داشته باشند. ما از کلمه کلیدی super برای دسترسی به متد سوپر کلاس استفاده می کنیم.

مثال ۳ : به ویژگی سوپرکلاس دسترسی پیدا کنید

  1. class Animal {
  2. protected String type=”animal”;
  3. }
  4. class Dog extends Animal {
  5. public String type=”mammal”;
  6. public void printType() {
  7. System.out.println(“I am a ” + type);
  8. System.out.println(“I am an ” + super.type);
  9. }
  10. }
  11. class Main {
  12. public static void main(String[] args) {
  13. Dog dog1 = new Dog();
  14. dog1.printType();
  15. }
  16. }

هنگامی که برنامه را اجرا می کنیم ، خروجی برابر خواهد بود با:

I am a mammal

I am an animal

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

چرب زبان

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

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

پک کامل جاوا

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

سپس یک شی dog1 از کلاس Dog ایجاد کردیم و متد ()printType را با استفاده از این شی صدا زدیم.

در داخل تابع ،()printType

  • type به ویژگی زیر کلاس Dog بر می گردد.
  • super.type به ویژگی سوپر کلاس Animal اشاره دارد.

را چاپ می کند System.out.println(“ I am a “ + type); عبارت I am a mammal در اینجا

و

System.out.println(“ I am an”+super.type); عبارت I am an animal

را چاپ می کند.

۳- استفاده از super() برای دسترسی به سازنده سوپرکلاس

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

برای صدا زدن سازنده ی سوپرکلاس به جای سازنده ی زیر کلاس، از ()super استفاده می کنیم. (شکل ویژه ی کلید واژه ی super)

مثال ۴ : استفاده از ()super

  1. class Animal {
  2. // default or no-arg constructor of class Animal
  3. Animal() {
  4. System.out.println(“I am an animal”);
  5. }
  6. }
  7. class Dog extends Animal {
  8. // default or no-arg constructor of class Dog
  9. Dog() {
  10. // calling default constructor of the superclass
  11. super();
  12. System.out.println(“I am a dog”);
  13. }
  14. }
  15. class Main {
  16. public static void main(String[] args) {
  17. Dog dog1 = new Dog();
  18. }
  19. }

خروجی

I am an animal

I am a dog

وقتی شی dog1 از کلاس Dog ساخته می شود، به صورت اتوماتیک سازنده ی پیش فرض یا بدون آرگومان کلاس را فراخوانی می کند.

داخل سازنده ی زیر کلاس، عبارت ()super سازنده ی سوپر کلاس را صدا می زند و دستورات داخل آن را اجرا می کند. در اینجا ما خروجی I am an animal را مشاهده می کنیم.

استفاده از ()super

جریان برنامه سپس به سازنده زیر کلاس برمی گردد و دستورات باقی مانده را اجرا می کند. بنابراین ، I am a dog چاپ می شود.

استفاده از ()super اجباری نیست. حتی اگر از ()super در سازنده زیر کلاس استفاده نشده باشد ، کامپایلر بطور خودکار سازنده پیش فرض سوپر کلاس را صدا می کند.

اگر کامپایلر به طور خودکار ()super را فراخوانی می کند، چرا از کد های اضافه استفاده می کنیم؟

اگر سازنده پارامتری (سازنده ای که آرگومان می گیرد) سوپرکلاس را بخواهیم به جای سازنده زیر کلاس فرا بخوانیم ، لازم است.

()super پارامتری باید همیشه اولین جمله در بدنه سازنده زیر کلاس باشد ، در غیر این صورت خطای کامپایلر دریافت می کنیم.

مثال ۵ : فراخوانی سازنده ی پارامتری با استفاده از ()super

  1. class Animal {
  2. // default or no-arg constructor
  3. Animal() {
  4. System.out.println(“I am an animal”);
  5. }
  6. // parameterized constructor
  7. Animal(String type) {
  8. System.out.println(“Type: “+type);
  9. }
  10. }
  11. class Dog extends Animal {
  12. // default constructor
  13. Dog() {
  14. // calling parameterized constructor of the superclass
  15. super(“Animal”);
  16. System.out.println(“I am a dog”);
  17. }
  18. }
  19. class Main {
  20. public static void main(String[] args) {
  21. Dog dog1 = new Dog();
  22. }
  23. }

خروجی

Type: Animal

I am a dog

کامپایلر می تواند اتوماتیک سازنده ی بدون آرگومان را صدا بزند. با این حال نمی تواند سازنده ی پارامتری را صدا بزند.

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

فراخوانی سازنده ی پارامتری با استفاده از ()super

توجه داشته باشید که در مثال بالا ، صریحاً سازنده پارامتری (super(“Animal” را صدا زدیم. کامپایلر در این حالت سازنده پیش فرض سوپر کلاس را صدا نمی کند.

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

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

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

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

مشاهده همه

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

1 2 3 4 5

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

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