Javaдагы OOPs түшүнүктөрү



Java

Java негизделген программалоо тили OOPs түшүнүктөр (объектке багытталган программалоо тутуму). Башка сөз менен айтканда, колдонот объектилер маалыматтарды жана алардын жүрүм-турумун аныктоо. Бул кодду ийкемдүү кылат жана окулушун жогорулатат жана кодду оңой түшүнүүгө жардам берет. Бул окуу куралы, биз Javaдагы OOPs түшүнүктөрүн түшүнөбүз.

Javaдагы OOPдердин мүнөздөмөлөрү

Javaдагы OOPs түшүнүктөрү

Javaдагы OOPs түшүнүктөрүнүн артыкчылыктары

  • Коддун ашыкча болушун азайтат
  • Коддун окулушун жакшыртат
  • Иштеп чыгуунун төмөндүгү
  • Программалык камсыздоонун сапаты жакшырды
  • Продукцияны тезирээк иштеп чыгуу
  • Коддун кайрадан колдонулушу

Javaдагы OOPs көйгөйлөрү

  • Жогорку окуу ийри
  • Программанын чоң көлөмү
  • Жай аткаруу

зат

Javaдагы Объектиге багытталган программалоонун маанилүү өзгөчөлүктөрүнүн бири an зат. Объект класстын мисалы болгон чыныгы жашоону билдирет. Ал экөөнү тең камтыйт маалымат жана ыкмалары(жүрүм-турум). Объектилердин негизинен 2 мүнөздөмөсү бар мамлекет жана жүрүм-турум. Абал - бул объекттин (маалыматтардын) идентификациясынан башка эч нерсе эмес жана жүрүм-турум объектинин функциясын (ыкмасын) сүрөттөйт.

мисал:

зат: Mobile

мамлекет: Аты, Модели №, Түсү

жүрүш-туруш: Чалуу, билдирүү жөнөтүү, күйгүзүү, өчүрүү, сүрөткө тартуу ж.б.

Келгиле, муну бир мисал менен түшүнүп алалы. Бул жерде класстын аталышы мобилдик болуп саналат жана анын аталышы, аталышы, аталышы, моделдин номери жана түс. Java программалоосунда, биз бул атрибуттарды деп атабыз өзгөрмөлөр жана жүрүм-турум кабыл алынат.

Ыкмалары call (), message (), switchOn () жана switchOff ().

Объекттин аталышы бул мобилдик класстын мисалы. Бул объектти колдонуу m, биз атрибуттарга жана методдорго кире алабыз.

public class Mobile {

  //Attributes
  String mobilename;
  String modelNumber;
  String color;
  
  //Methods
  public void call() {
    
  }
  
  public void message() {
    
  }
  public void switchOn() {
    
  }
  public void switchOff() {
    
  }
  
  public static void main(String[] args) {
    Mobile m = new Mobile();

  }

}

тап

Класты прототип же план катары аныктоого болот, андан бир нече объекттерди түзө алабыз. Башка сөз менен айтканда, бул эч нерсе эмес, бир жактардын тобу. Биз жазган ар кандай java программасы javaдагы объект багытталган программалоонун дагы бир өзгөчөлүгү болгон класс катары жазылышы керек.

мисал:

Класс: Адам

Объект: Эркек же Аял

Мамлекет: аты, жашы

Жүрүм-турум: тамактануу, сейилдөө, тамак бышыруу ж.б.

Төмөндө бир нече объектилерден турган класс түзүүнүн жана маалыматтарга жана өзгөрүлмө нерселерге жетүүнүн мисалы келтирилген. Аттуу классты түздүк Person 2 объект менен эркек жана ургаачы. Ушул 2 объекттин жардамы менен биз объектилердин негизги колдонулушу болгон класстын бардык атрибуттарына жана методдоруна жете алабыз. Бул ашыкчаны азайтып, коддун окулушун жакшыртат. Ошондой эле класс үчүн объект түзүлүп жатканда чакырылуучу конструкторду түздүк. Конструкторлор жөнүндө көбүрөөк билүү үчүн, шилтемени караңыз Javaдагы конструкторлор окуу куралы.

public class Person {
  
  //Attributes
  String name;
  int age;
  
  Person(String name, int age){
    this.name = name;
    this.age = age;
  }
  
  public void eating() {
  System.out.println("Eating");	
  }
  public void walking() {
    System.out.println("Walking");
  }

  public static void main(String[] args) {
    Person male = new Person("Dev",35);
    Person female = new Person("Devika",20);
    
    System.out.println(male.name + " " + male.age);
    male.eating();
    System.out.println(female.name + " " + female.age);
    female.walking();
    

  }

}
Dev 35
Eating
Devika 20
Walking

OOPs түшүнүктөрү - Абстракция

Абстракция Javaдагы негизги OOPs түшүнүктөрүнүн бири. Ал негизинен кандай маалыматтардын көрүнүшү керектигин жана эмнени жашыруу керектигин аныктайт. Башка сөз менен айтканда, ал жөн гана ички функционалдык эмес, ыкмаларды камсыз кылат. Мисалы, уюлдук телефонду колдонгондо, анын жүрүм-турумун билебиз, бирок анын иштөө механизмин билбейбиз. Колдонмонун коопсуздугу үчүн абстракцияны колдонсок болот. Мисалы, биз таза банкка кирип, колдонуучунун аты менен сыр сөзүн бергенде, сыр сөз жашырылган.

Биз объектке багытталган программалоонун ушул өзгөчөлүгүн java ичинде класс, маалымат же метод үчүн колдонсок болот. Абстракцияны ишке ашыруу үчүн биз колдонобуз кошки жана абстракттуу сабактар. Төмөндө Javaдагы ушул OOPs түшүнүгүн түшүнүп алалы.

Абстракттуу класс

Абстракттуу классты же ыкманы түзүү үчүн биз жалпылаган ачкыч.

Эгерде биз абстрактуу классты түзсөк, анда бул класс үчүн объект түзө албайбыз дегенди билдирет. Ошондой эле, абстракттуу класс абстрактуу методго жана кадимки методдорго да ээ болушу мүмкүн. Эгерде класста абстрактуу ыкма болсо, анда биз классты абстракттуу деп жарыялашыбыз керек.

Абстракттуу класс методдун декларациясын гана камтыйт жана ишке ашыруу жок. Бул үчүн биз колдонушубуз керек тукум куучулук жана абстракттуу класс функциясын кеңейтүү менен абстракттуу методикалык функцияны ишке ашыруу. Абстракттуу класстын бардык абстракттуу методдорун ишке ашыруу милдеттүү, антпесе компиляция катасын кетирет.

Абстракттуу класстын жана методдун мисалы

Мына, биз абстрактуу классты түздүк Музыка анткени анда 2 абстрактуу метод жана 1 кадимки метод бар. Абстрактуу методдор getMarks жана setMarks декларациялары гана бар жана эч кандай аткарылышы жок, демек, ал функциянын ичинде эч кандай код жок. Бизде абстрактуу эмес ыкма дагы бар getName анын ичиндеги функционалдуулук менен.

/ * Файлдын аты: Scores.java * /

//Abstract class
public abstract class Scores {
  String name;
  abstract int getMarks(); //abstract method
  abstract void setMarks(int marks);//abstract method
  
  //non abstract method
  public String getName() {
    return name;
  }
}

Андан кийин, биз дагы бир класс түзөбүз  Колледж. Тартипте абстракттуу класстын абстрактуу методдорун ишке ашыруу Упайлар, биз ачкыч сөздү колдонуп абстракттуу классты кеңейтишибиз керек созулат. Бул класста абстракттуу методдордун бардык аткарылышын камсыз кылабыз. Андан кийин биз объект жаратабыз класс үчүн оокуу жай жана ушул ыкмаларга жана маалыматтарга жетки алуу.

/ * Файлдын аты: College.java * /

public class College extends Scores {

  public int marks;
  public int getMarks() {
    return marks;
  }
  
  public void setMarks(int marks) {
    this.marks = marks;
  }
  public static void main(String[] args) {
    College c = new College();
    c.name = "Harish";
    c.setMarks(80);
    System.out.println("Student Name: " + c.name);
    System.out.println("Student Marks: " + c.getMarks());

  }

}
Student Name: Harish
Student Marks: 80

Абстракциялоонун негизги идеясы, функционалдуулугу бирдей болсо дагы, аны ишке ашыруу жолу ар бир класс үчүн ар башка болушу мүмкүн. Бул көбүрөөк ийкемдүүлүктү камсыз кылат.

Мисалы, төмөндө дагы бир класс бар мектеп ошол эле абстракттуу классты кеңейтет Музыка. Бирок байкасаңыз, бул жерде абстрактуу ыкмаларды ишке ашыруу башкача экендигин көрө алабыз. Бизде ыкманы ишке ашырууну өзгөртүү ийкемдүүлүгү бар. Бул мисалда биз дагы кошумчаладык 5 ичиндеги белгилерге getMarks ыкмасы жана кошулган 2 -га setMarks методу.

/ * Файлдын аты: School.java * /

public class School extends Scores{

  int marks;
  public int getMarks() {
    return marks+5;
    
  }
  public void setMarks(int marks) {
    this.marks = marks+2;
  }
  public static void main(String[] args) {
    School s = new School();
    s.name = "Harsha";
    s.setMarks(80);
    System.out.println("Student Name: " + s.name);
    System.out.println("Student Marks: " + s.getMarks());

  }

}
Student Name: Harsha
Student Marks: 87

Interface

Интерфейс дагы класска окшош, бирок абстрактуу методдордун тобун камтыйт. Ал ыкманы ишке ашырууну камтыбайт, бирок анын методу гана аныкталат. Ушул абстракттуу методдордун функционалдуулугун ишке ашыруу үчүн, мурасты колдонушубуз керек. Абстракттуу класс менен интерфейстин бир айырмачылыгы, интерфейстин абстрактуу эмес методдору болушу мүмкүн эмес. The Interface жетишүүнүн дагы бир жолу абстракция бул дагы Javaдагы маанилүү OOPs түшүнүгү

Интерфейстин мисалы

Бул мисалда биз интерфейс түздүк Shapes ыкмасы бар calcArea. Интерфейсте биз ыкманын декларациясын гана камсыз кылабыз жана ишке ашыруу жок. Бул методду ишке ашыруу үчүн, биз дагы бир классты аныкташыбыз керек.

public interface Shapes {
  public void calculateArea();
}

Мына бизде класс бар тик бурчтук ишке ашырат Shapes класс. Бул үчүн биз жүргүзүү ачкыч сөз. Бул класс методдун иштешин камсыз кылат calcArea. Javaдагы ушул OOPs концепциясынын негизги идеясы - ар кандай класс үчүн функционалды башкача жол менен жүзөгө ашырууга ийкемдүүлүктү камсыз кылуу.

public class Rectangle implements Shapes {

  public void calculateArea() {
    int l = 4;
    int b = 5;
    int area = l*b;
    System.out.println("Area: " + area);
  }
  public static void main(String[] args) {
    Rectangle r = new Rectangle();
    r.calculateArea();

  }

}

Area: 20

Аттуу дагы бир классты түзсөк болот аянт жана ишке ашыруу Shapes класс. Бул класс колдоно алат calcArea төмөндөгүдөй башка жол менен. Демек ыкма calcArea интерфейсти жүзөгө ашырган ар бир класс спецификациясынын негизинде ишке ашырылышы мүмкүн.

public class Square implements Shapes {

  public void calculateArea() {
    int l = 4;
    int area = l*l;;
    System.out.println("Area: " + area);
  }
  public static void main(String[] args) {
    Square s = new Square();
    s.calculateArea();
  }

}
Area: 16

OOPs түшүнүктөрү - Инкапсуляция

Encapsulation Javaдагы дагы бир OOPs концепциясы, бул маалыматтарды жана анын ыкмасын тышкы кийлигишүүдөн байлап турат. Бул башка класстарга бул маалыматтарга же ыкмаларга түздөн-түз кирүүгө же жаңыртууга жол бербейт дегенди билдирет. Жакшы мисалдардын бири - бул Java классынын өзү, ал тыгыз байлайт маалымат жана анын класстагы функциялары. Буга жетишүү үчүн, биз өзгөрүлмө же маалыматтарды жарыялайбыз жеке өзгөрүлмө. Жеке өзгөрүлмө деген эмне экендигин кийинки окуу куралдарында кененирээк талкуулайбыз мүмкүндүк алуу модификаторлору. Азырынча жеке өзгөрүлмөлөргө класстан тышкары кирүүгө болбой тургандыгын унутпаңыз. Бул маалыматтарга жетүү жана жаңыртуу үчүн биз колдонушубуз керек коомдук алуу жана коюу ыкмалары. Бул жеке өзгөрүлмөлөргө түздөн-түз башка класстардан кире албайбыз. Демек, инкапсуляция колдонуучудан жашыруун маалыматтарды жашырууга жардам берет. Ал ошондой эле деп аталат маалыматтарды жашыруу.

Инкапсуляциянын эң жакшы мисалдарынын бири - а капсула өзү (аты айтып тургандай) ичинде бизде көрүнбөй турган дары бар.

мисал

Келгиле, мисал келтирип, ушул OOPs Инкапсуляция түшүнүгүн түшүнөбүз. Менен Student.java классын түздүк жеке өзгөрмөлөр ысым жана жашы. Башка класстардагы өзгөрмөлөргө жетүү үчүн getName, setName, getAge жана setAge методдорун колдонуу керек. Булар аталат getters жана setters Java-дагы объект багытталган программалоодо.

/ * Файлдын аты: Student.java * /

public class Student {

  private String name;
  private int age;
  
  public String getName() {
    return name;
  }
  public void setName(String studentname) {
    this.name = studentname;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int studentage) {
    this.age = studentage;
  }
}

/ * Файлдын аты: Department.java * /

Биз дагы бир класс түздүк бөлүм жана ушул жерден биз жеке өзгөрүлмөлөрүнө кирүүгө аракет кылып жатабыз окуучу класс. Демек, бул үчүн биз getters жана setters ыкмасын ошого жараша колдонсок болот. Демек, бул класс getter жана setter ыкмаларын ички жүзөгө ашырууну билбейт. Бул getName студенттин атын алууга жардам берет жана setName студенттин атын коюуга жардам берет деп гана билет. Бул Javaдагы OOPs түшүнүгүнүн негизги идеясы, ал ар кандай тиркемени иштеп чыгууда колдонулат.

public class Department {
  public static void main(String[] args) {
    Student s = new Student();
    s.setName("Arthi");
    s.setAge(32);
    System.out.println("Student Name: " + s.getName());
    System.out.println("Student Age: " + s.getAge());
  }
  
}

Student Name: Arthi
Student Age: 32

Бул жеке өзгөрүлмөлөргө башка класстан методдорду колдонбостон түздөн-түз кирүүгө аракет кылдык дейли, биз төмөндөгүдөй ката алабыз. Бул өзгөрүлмө купуя болгондуктан, ал көрүнбөй калгандыктан ката кетирет,

public class Department {
  public static void main(String[] args) {
    Student s = new Student();
    s.name = "Arthi";
    s.age = 32;
  }
  
}

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
  The field Student.name is not visible
  The field Student.age is not visible

  at Department.main(Department.java:8)

OOPs түшүнүктөрү - Мурас

Качан бир класс башка класстын методдорун жана өзгөрмөлөрүн кайра колдоно алса, биз муну OOP деп атайбыз катары Javaдагы түшүнүк тукум куучулук. Бул класс башка класстардын маалыматтарын жана функцияларын ушул класска чейин узартылды ачкыч сөз. Ата-энелер классы деп аталат базалык класс же суперкласс жана ата-эне классын кеңейтүүчү класс деп аталат бала классы же подкласс же туунду класс. Башка сөз менен айтканда, Javaдагы ушул OOPs түшүнүгүн колдонуп, бардык өзгөрүлмө жана ыкмаларды мураска алуу менен, бар классты колдонуп, жаңы классты аныктай алабыз.

Java-да объектке багытталган программалоонун ушул өзгөчөлүгүнүн негизги колдоосу болуп саналат мамилелер. Мисалы:

  • Автоунаа бул унаа
  • Скрипка - бул аспап
  • Ноутбук - бул гаджет

Бардык сөздөр кийин is-a белгилөө ата-эне класс жана буга чейинки бардык сөздөр is-a белгилөө подкласс.

синтаксиси

class A {
 //code
}

class B extends class A {
  //code
}

А классы ата-эне класс жана В класс болуп саналат бала класс.

узартылды болуп саналат ачкыч Java'да Мурас OOPs түшүнүгүн колдойт

Javaда мурас деп аталган ушул негизги OOPs концепциясы жөнүндө түшүнүккө ээ болуп, анын жөнөкөй мисалы менен анын деталдарын карап көрөлү.

Мураска мисал

Бул жерде Автотранспорт бул сап өзгөрмөсүн камтыган эне класс ысым жана 4 башка ыкма startVehicle (), applyBrakes (), stopVehicle () жана setName. Ал ошондой эле функцияны ишке ашырууну камтыйт.

/ * Файлдын аты: Vehicle.java * / - Ата-эне классы

public class Vehicle {
  String name;
  
  public void startVehicle() {
    System.out.println("Starting the vehicle");
  }
  
  public void applyBrakes() {
    System.out.println("Apply brakes");
  }
  
  public void stopVehicle() {
    System.out.println("Stopping the vehicle");
  }
  
  public void setName(String name) {
    this.name = name;
  }
}

/ * Файлдын аты: Car.java * / - Бала классы

Эми, биз дагы бир классты түзөбүз Car.java жана аны кеңейтүү Унаа классы. ушундай Унаа классы балдар классына айланат. Бул класс төмөндөгү коддон көрүнүп тургандай Vehicle классынын бардык өзгөрүлмө жана методдорун мурастай алат. Бала классында аларды кайрадан жарыялоонун кажети жок.

Биз жөн гана Car классы үчүн объект түзүп, ушул объектти колдонуп маалыматтарга жана методдорго жетүүбүз керек. Жөнөкөй сөз менен айтканда, унаа унаа каражаты деп айтсак болот. Демек, java колдоосу боюнча мурас мамилелер.

public class Car extends Vehicle{

  public static void main(String[] args) {
    Car c = new Car();
    c.setName("BMW");
    System.out.println("Vehicle name: " + c.name);
    c.startVehicle();
    c.applyBrakes();
    c.stopVehicle();

  }

}
Vehicle name: BMW
Starting the vehicle
Apply brakes
Stopping the vehicle

Мурастоонун түрлөрү

Төмөндө сүрөттөлгөндөй, Мурастоонун ар кандай түрлөрү бар:

Javaдагы OOPs түшүнүктөрү

Жалгыз Мурас

Бир класс экинчи классты кеңейткенде, биз аны ата-эне менен баланын ортосундагы мамилени жараткан бирден-бир мурас деп атайбыз.

Javaдагы OOPs түшүнүктөрү

Көп деңгээлдүү мурас

Бала классы башка бала классын (ата-эне классын кеңейтүүчү класс) кеңейткенде, биз аны көп деңгээлдүү мурас деп атайбыз. Мисалы, С классы В классын, В классы А классын кеңейтет.

Javaдагы OOPs түшүнүктөрү

Иерархиялык Мурас

Бир класстын аталышы бирден көп болсо, аны иерархиялык мурас деп атайбыз. Мисалы, В классы жана С классы А классын кеңейтет.

Javaдагы OOPs түшүнүктөрү

Hybrid Мурас

Гибриддик мурас мурастоонун бир нече түрүн камтыйт. Мисалы, В классы жана С классы А классын (иерархиялык), ал эми D классы В классын (жалгыз) кеңейтет.

Javaдагы OOPs түшүнүктөрү

Ошондой эле аталган мурастын дагы бир түрү бар Бир нече мурас анда класс 1ден ашык ата-эне классын жайылтат. Бирок бул жок колдоо Java'да, бирок C ++ колдойт.

Мурастоо түрлөрү жөнүндө кененирээк өзүнчө окуу куралы аркылуу түшүнөбүз.

OOPs түшүнүктөрү - Полиморфизм

Полиморфизм, аты айтып тургандай, “ээ болуубир нече форма«Бул Javaдагы дагы бир маанилүү OOPs концепциясы, ал көбүнчө бир эле методду ар кандай жүзөгө ашыра турган көптөгөн программаларды иштеп чыгууда колдонулат.

Келгиле, мисал келтирип, Javaдагы объектке багытталган программалоонун бул өзгөчөлүгүн түшүнөбүз. Мисалы, ар бир велосипед түрү ар кандай ылдамдыкта болушу мүмкүн. Honda Access сыяктуу орто ылдамдыктагы велосипеддерге салыштырмалуу TVS 50 ылдамдыктын кубаттуулугу сыяктуу жай ылдамдыктагы велосипеддер жай, ал эми Pulsar сыяктуу жогорку ылдамдыктагы велосипеддерге салыштырмалуу жай болушу мүмкүн. Демек, велосипеддин бардык 3 түрүнүн ылдамдыгы бар болсо да, ишке ашыруу бири-биринен айырмаланат.

Полиморфизм мисалы

/ * Файлдын аты: Bike.java * / Ата-энелер классы

Мына, бизде бар класс Bike бул ата-энелер классы жана методикасы бар ылдамдык () деген билдирүүсү менен "Демейки ылдамдык".

public class Bike {

  public void speed() {
    System.out.println("Default speed");
  }
}

/ * Файлдын аты: SlowBike.java * / - Бала классы

Андан кийин, биз subclass түзөбүз SlowBike негизги классты кеңейтүүчү жана ошол эле ыкмага ээ ылдамдык () бирок башкача билдирүү менен жай ылдамдык. Качан биз объект түзөбүз SlowBike класс жана ылдамдык ыкмасын атаңыз, ал "жай ылдамдык" басып чыгарат. Бирок биз объектини түзсөк Bike класс, андан кийин "демейки ылдамдыкты" басып чыгарат.

public class SlowBike extends Bike {
  public void speed() {
    System.out.println("Slow speed");
  }
  
  public static void main(String[] args) {
    Bike slow = new SlowBike();
    slow.speed();
    Bike b = new Bike();
    b.speed();
  }

}
Slow speed
Default speed

/ * Файлдын аты: MediumBike.java * /

Ошо сыяктуу эле, биз дагы бир класска ээ болот MediumBike суперклассты кеңейтет. Ошентип, биз ылдамдык () бул класстык объектти колдонуу ыкмасы, ал "Орточо ылдамдыгын" басып чыгарат.

public class MediumBike extends Bike {
  public void speed() {
    System.out.println("Medium speed");
  }
  public static void main(String[] args) {
    Bike medium = new MediumBike();
    medium.speed();
  }
}
Medium speed

Полиморфизмдин түрлөрү

Полиморфизмдин 2 түрү бар:

  • Статикалык Полиморфизм - Бул ошондой деп аталат түзүү убактысы полиморфизм.
  • Динамикалык Полиморфизм - деп аталат узактыгы полиморфизм.

Статикалык Полиморфизм

Полиморфизм компиляция убагында чечилгенде, аны статикалык полиморфизм деп атайбыз. Бир мыкты мисал ашыкча жүктөө ыкмасы. Демек, биз класста бирдей аталыштагы бир нече ыкмаларды колдоно алабыз, бирок ар кандай кол тамгаларга (параметрлерге) ээ болобуз.

мисал:

Бул статикалык полиморфизмдин мисалы же бизде ушундай эле ыкма бар болсо, ашыкча жүктөө кошуу бирок ар кандай параметрлер тизмеси менен. Компиляция убагында, параметрлердин негизинде, кайсы ыкма менен чалууну чечет. Биринчиден, кошуу ыкмасы параметр катары 2 бүтүн сандан турат, ал эми экинчи кошуу ыкмасы параметрден 2 эсе көп. Кошуу ыкмасын бүтүн сан менен атасак, биринчи ыкма, ал эми эки эсе менен чакырганда экинчи ыкма деп аталат.

public class StaticDemo {
  
  public void add(int a, int b) {
    int sum = a + b;
    System.out.println("Sum: " + sum);
  }
  
  public void add(double x, double y) {
    double sum = x + y;
    System.out.println("Sum: " + sum);
  }

  public static void main(String[] args) {
    StaticDemo d = new StaticDemo();
    d.add(4, 5);
    d.add(3.2, 5.2);
    

  }

}
Sum: 9
Sum: 8.4

Динамикалык Полиморфизм

Полиморфизм иштөө учурунда чечилгенде, биз аны динамикалык полиморфизм деп атайбыз. Мethod жокко чыгаруу динамикалык полиморфизмдин мисалы болуп саналат. Бул жерде, JVM иштөө учурунда кайсы ыкманы аташ керектигин чечет, анткени ата-эне классы дагы, бала классы дагы бирдей метод аталышын камтыйт. Динамикалык полиморфизм болгон биринчи полиморфизм мисалын эстейли.

мисал:

/ * Файлдын аты: Bike.java * / Ата-энелер классы

Мына, бизде бар класс Bike бул ата-энелер классы жана методикасы бар ылдамдык () деген билдирүүсү менен "Демейки ылдамдык".

public class Bike {

  public void speed() {
    System.out.println("Default speed");
  }
}

/ * Файлдын аты: HighBike.java * /

Ошол сыяктуу эле, биз дагы бир подкласс ала алабыз FastBike суперклассты кеңейтет. Ошентип, биз ылдамдык () бул класстык объектти колдонуу ыкмасы "Жогорку ылдамдык" басып чыгарат.

public class FastBike extends Bike {
  public void speed() {
    System.out.println("High speed");
  }
  
  public static void main(String[] args) {
    Bike high = new FastBike();
    high.speed();
  }
}
High speed

Жогорудагы мисалда эки класс тең бирдей аталышка ээ ылдамдык. Иштөө учурунда, JVM кайсы ыкманы чакырууну чечет. Кайсы класс үчүн объект түзгөнүбүздүн негизинде, ага ылайыктуу ыкма аталат. Бул жерде FastBike классы үчүн объект түзүп жаткандыктан, ал ошол класстык метод деп аталат.

Төмөнкү коддогудай эле чалабыз деп коёлу. Ал Bike класс ыкмасын чакырып, "Default speed" басып чыгарат

Bike high = new Bike(); 
high.speed();
Default speed

Ар башка полиморфизм түрлөрү жөнүндө кененирээк мисалдарды өзүнчө окуу куралы аркылуу талкуулайбыз.

шилтеме