برنامه نویسی
درک وراثت در جاوا از طریق یک مثال عملی

وراثت یک مفهوم اصلی در برنامه نویسی شی گرا (OOP) است که به یک کلاس اجازه می دهد تا خصوصیات (ویژگی ها و روش ها) کلاس دیگر را بدست آورد. در جاوا، وراثت با استفاده از extends
کلمه کلیدی و نشان دهنده یک رابطه “is-a” است. این مقاله وراثت در جاوا را از طریق یک مثال کاربردی توضیح می دهد.
مثال کد
// Defining a class
class Animal {
// General attributes
protected String colour;
protected String breed;
protected int age;
// General methods
public String sleep() {
return "Both cats and dogs sleep";
}
public String eat() {
return "They also eat";
}
// Constructor
public Animal(String colour, String breed, int age) {
this.colour = colour;
this.breed = breed;
this.age = age;
}
// Getters and setters
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
public String getBreed() {
return breed;
}
public void setBreed(String breed) {
this.breed = breed;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
// Cat class inheriting from Animal class
class Cat extends Animal {
private String catName;
public Cat(String colour, String breed, int age, String catName) {
super(colour, breed, age); // Call the parent class constructor
this.catName = catName;
}
public String getCatName() {
return catName;
}
public void setCatName(String catName) {
this.catName = catName;
}
public String catSound() {
return "Cat meows!";
}
}
// Dog class inheriting from Animal class
class Dog extends Animal {
private String dogName;
public Dog(String colour, String breed, int age) {
super(colour, breed, age);
}
public String getDogName() {
return dogName;
}
public void setDogName(String dogName) {
this.dogName = dogName;
}
public String dogSound() {
return "Dog barks!";
}
}
public class Demo {
public static void main(String[] args) {
Cat myCat = new Cat("Brown", "Persian", 2, "Tom");
Dog myDog = new Dog("Black", "Labrador", 3);
// Display Cat details
System.out.println("Cat's Name: " + myCat.getCatName());
System.out.println("Cat's Colour: " + myCat.getColour());
System.out.println("Cat's Breed: " + myCat.getBreed());
System.out.println("Cat's Age: " + myCat.getAge());
System.out.println("Cat Sound: " + myCat.catSound());
System.out.println("Cat Behavior: " + myCat.eat() + " and " + myCat.sleep());
// Display Dog details
System.out.println("Dog's Colour: " + myDog.getColour());
System.out.println("Dog's Breed: " + myDog.getBreed());
System.out.println("Dog's Age: " + myDog.getAge());
System.out.println("Dog Sound: " + myDog.dogSound());
}
}
کلاس والدین (حیوانات):
- ویژگی های مشترک را تعریف می کند (
colour
،breed
،age
) و روش ها (sleep
،eat
) که بین همه حیوانات مشترک است. - سازنده ای برای مقداردهی اولیه این ویژگی ها فراهم می کند.
- شامل گیرنده ها و سترها برای کپسوله کردن.
کلاس های کودک (گربه و سگ):
- کلاس Animal را گسترش دهید و ویژگی ها و متدهای آن را به ارث ببرید.
- افزودن ویژگی های خاص (
catName
،dogName
) و رفتارها (catSound
،dogSound
). - استفاده کنید
super
کلمه کلیدی برای فراخوانی سازنده کلاس والد و مقداردهی اولیه ویژگی های ارثی.
کلاس دمو:
- به عنوان نقطه ورود برنامه عمل می کند.
- نحوه ایجاد اشیاء کلاس های Cat و Dog و دسترسی به ویژگی ها و روش های آنها را نشان می دهد.
- قابلیت استفاده مجدد کد: کلاس های Cat and Dog از کد موجود در کلاس Animal استفاده مجدد می کنند.
- توسعه پذیری: کلاس های جدید کودک (به عنوان مثال، پرنده، ماهی) را می توان به راحتی با گسترش کلاس Animal اضافه کرد.
-
چند شکلی: روش های مشترک مانند
sleep
وeat
را می توان در کلاس های کودک برای ارائه رفتارهای خاص نادیده گرفت.
yaml
Cat's Name: Tom
Cat's Colour: Brown
Cat's Breed: Persian
Cat's Age: 2
Cat Sound: Cat meows!
Cat Behavior: They also eat and Both cats and dogs sleep
Dog's Colour: Black
Dog's Breed: Labrador
Dog's Age: 3
Dog Sound: Dog barks!
[Link to my GitHub](https://github.com/kin-yao)
[Link to the java repo](https://github.com/kin-yao/my_java_class)