Thursday, May 27, 2010

Polymorphism буюу ондоошил.

Ондоошил гэдэг нь зөвхөн удамшлийн үед гардаг ойлголт юм. Тухайлбал А классаас Б, В гэсэн хоёр янзын класс тус тус удамшуулан гарган авсан байг. Тэгвэл А классын хувьсагч болгон зарлаад Б-ын байгуулагч, эсвэл В-ын байгуулагч функцээр обьектыг нь санах ойд үүсгэж болдог тухай ойлголт юм.

class Fruit {
public String color;

public Fruit(String name) {
this.color = color;
System.out.println("I am a fruit.");
}

public void doJuice() {
System.out.println("Fruit Juice. Enjoy IT!");
}
}

class Apple extends Fruit {
public Apple(String color) {
super(color);
System.out.println("I am an apple.");
}

public void doJuice() {
System.out.println("Apple Juice. Enjoy IT!");
}
}

class Orange extends Fruit {
public Apple(String color) {
super(color);
System.out.println("I am an orange.");
}

public void doJuice() {
System.out.println("Orange Juice. Enjoy IT!");
}
}

public class FruitDemo {
public static void main(String args[]) {

Fruit fruits[] = new Fruit[2];
fruits[0] = new Apple("Red");
fruits[0].doJuice();
fruits[1] = new Orange("Yellow");
fruits[1].doJuice();

Apple apple = (Apple) fruits[0];
apple.doJuice();
}
}


Дээрх жишээнээс харахад эцэг класс нэгтэй олон төрлийн subclass-ууд хоорондоо чөлөөтэй төрөл хувирч, ондооширч болж байна. Жава хэлний энэ шинж чанарыг маш өргөн ашиглаж олон төрлийн гайхалтай програмуудыг зохиосон байдаг.

2 comments:

  1. public Fruit(String name) {
    this.color = color;
    System.out.println("I am a fruit.");
    }
    Энийгээ засч бичээрэй. Алдчихаж. Уул нь биччихээд нэг хянаж байвал зүгээр юм даа. No offence.

    ReplyDelete
  2. Ok
    class Orange extends Fruit {
    public Apple(String color) {
    super(color);
    System.out.println("I am an orange.");
    }

    Apple-г Orange болгочоорой

    ReplyDelete