جاوا

جلسه ۲۸: Syntax و اصطلاحات وراثت در جاوا

SubClass extends SuperClass{
//contents of SubClass
}

برای مثال اگر کلاس وسیله نقلیه (Vehicle) را به عنوان کلاس پایه در نظر بگیریم. کلاس اتومبیل (Car) می تواند از این کلاس Vehicle ارث بری داشته باشد و آن را گسترش دهد. زیرا یک اتومبیل یک وسیله نقلیه است. یعنی رابطه IS A بین این دو کلاس وجود دارد و وراثت آنها صحیح است.

// Base Class Vehicle
class Vehicle {

  // Private Fields
  private String make; 
  private String color; 
  private int year;      
  private String model;   


  // Parameterized Constructor
  public Vehicle(String make, String color, int year, String model) {
    this.make = make;
    this.color = color;
    this.year = year;  
    this.model = model; 
  }

  // public method to print details
  public void printDetails() {
    System.out.println("Manufacturer: " + make);
    System.out.println("Color: " + color);
    System.out.println("Year: " + year);
    System.out.println("Model: " + model);
  }
  
}

// Derived Class Car
class Car extends Vehicle {

  // Private field
  private String bodyStyle;

  // Parameterized Constructor
  public Car(String make, String color, int year, String model, String bodyStyle) {
    super(make, color, year, model);  //calling parent class constructor
    this.bodyStyle = bodyStyle;       
  }

  public void carDetails() {  //details of car
    printDetails();         //calling method from parent class
    System.out.println("Body Style: " + bodyStyle);
  }
  
}

class Main {

  public static void main(String[] args) {
    Car elantraSedan = new Car("Hyundai", "Red", 2019, "Elantra", "Sedan"); //creation of car Object
    elantraSedan.carDetails(); //calling method to print details
  }
  
}

در کد بالا ، فعلاً خط ۳۷ را نادیده بگیرید ، در جلسه بعدی با آن آشنا خواهید شد. توجه: در جاوا ، یک کلاس می تواند هربار فقط از یک کلاس دیگر ارث بری داشته باشد همچنین یک کلاس نمی تواند از خود ارث بری داشته باشد. در جلسه بعدی به معنی کلمه کلیدی و مهم super در ساختار وراثت جاوا می پردازیم.

در این جلسه ، Syntax وراثت و اصطلاحات مربوط به آن را می آموزید. موارد زیر را بیان خواهیم کرد

  • اصطلاحات
  • فرزند چه چیزی دارد؟
  • کلمه کلیدی extends

اصطلاحات

همانطور که می دانیم در وراثت یک کلاس جدید بر اساس یک کلاس موجود ایجاد می شود ، بنابراین از اصطلاحات زیر برای کلاس جدید و کلاس موجود استفاده می کنیم:

  • SuperClass (کلاس والد یا کلاس پدر یا کلاس پایه): این کلاس امکان استفاده مجدد از اعضای غیر خصوصی خود را در کلاس دیگری فراهم می کند.
  • SubClass (کلاس فرزند یا کلاس مشتق شده): این کلاس همان کلاسی است که از SuperClass ارث بری دارد.
کلاس فرزند تمام ویژگی های غیر خصوصی کلاس پدر را دارد.

فرزند چه چیزی دارد؟

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

  • همه اعضای غیر خصوصی تعریف شده در کلاس فرزند.
  • همه اعضای غیر خصوصی تعریف شده در کلاس پدر.
از بعضی از کلاس ها نمی توان ارث بری کرد. چنین کلاس هایی با کلمه کلیدی ، final تعریف می شوند. نمونه ای از این کلاس ها کلاس داخلی Integer است – این کلاس نمی تواند کلاس های مشتق شده داشته باشد.

کلید واژه extends

در جاوا ، برای پیاده سازی وراثت باید از کلمه کلیدی expands استفاده کنیم:

SubClass extends SuperClass{
//contents of SubClass
}

برای مثال اگر کلاس وسیله نقلیه (Vehicle) را به عنوان کلاس پایه در نظر بگیریم. کلاس اتومبیل (Car) می تواند از این کلاس Vehicle ارث بری داشته باشد و آن را گسترش دهد. زیرا یک اتومبیل یک وسیله نقلیه است. یعنی رابطه IS A بین این دو کلاس وجود دارد و وراثت آنها صحیح است.

// Base Class Vehicle
class Vehicle {

  // Private Fields
  private String make; 
  private String color; 
  private int year;      
  private String model;   


  // Parameterized Constructor
  public Vehicle(String make, String color, int year, String model) {
    this.make = make;
    this.color = color;
    this.year = year;  
    this.model = model; 
  }

  // public method to print details
  public void printDetails() {
    System.out.println("Manufacturer: " + make);
    System.out.println("Color: " + color);
    System.out.println("Year: " + year);
    System.out.println("Model: " + model);
  }
  
}

// Derived Class Car
class Car extends Vehicle {

  // Private field
  private String bodyStyle;

  // Parameterized Constructor
  public Car(String make, String color, int year, String model, String bodyStyle) {
    super(make, color, year, model);  //calling parent class constructor
    this.bodyStyle = bodyStyle;       
  }

  public void carDetails() {  //details of car
    printDetails();         //calling method from parent class
    System.out.println("Body Style: " + bodyStyle);
  }
  
}

class Main {

  public static void main(String[] args) {
    Car elantraSedan = new Car("Hyundai", "Red", 2019, "Elantra", "Sedan"); //creation of car Object
    elantraSedan.carDetails(); //calling method to print details
  }
  
}

در کد بالا ، فعلاً خط ۳۷ را نادیده بگیرید ، در جلسه بعدی با آن آشنا خواهید شد. توجه: در جاوا ، یک کلاس می تواند هربار فقط از یک کلاس دیگر ارث بری داشته باشد همچنین یک کلاس نمی تواند از خود ارث بری داشته باشد. در جلسه بعدی به معنی کلمه کلیدی و مهم super در ساختار وراثت جاوا می پردازیم.

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا