Зертханалық жұмыс 10
Тақырыбы: Java тілінде мұрагерлеу
Жұмыстың мақсаты: Java қосымшасында мұрагерлік әдістерін қолдануды үйрену
Теориялық мағлұмат
Мұрагерлік-объектіге бағытталған бағдарламалаудың негізгі ұғымдарының бірі. Java мұрагерлікті қолдайды және суперкласс пен ішкі класс арасындағы is-a қатынасын анықтайды. Мысалы, егер автомобильдің (автомобильдің) ішкі класы vehicle (көлік құралы) суперклассынан мұраға қалған болса, онда бұл автомобиль is-a (Бұл да) Vehicle дегенді білдіреді. Java — дағы мұрагерлік-бұл қолданыстағы сыныптардан жаңа класс құруға мүмкіндік беретін механизм. Java-дағы мұрагерлік өтпелі болып табылады, сондықтан егер седан (Седан) Car (Автомобиль) класын кеңейтсе, бұл Седан Vehicle (көлік құралы) класынан да мұраға қалғанын білдіреді. Осылайша, Vehicle Car сыныбы үшін де, Sedan сыныбы үшін де суперклассқа айналады.
Мұрагерлік Java қосымшаларында кеңінен қолданылады. Жақсы мысал Exception сыныбы болады-оны басқа сыныптар нақты қате сыныптарын жасау үшін мұра етеді.
Java-да әр сынып жасырын, бірақ java-ны кеңейтеді.lang. Нысан класы, сондықтан нысан класы Java-дағы мұрагерлік иерархиясының жоғарғы деңгейінде.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
package ua.com.prologistic.inheritance;
public class Animal {
private boolean vegetarian;
private String eats;
private int noOfLegs;
public Animal(){}
public Animal(boolean veg, String food, int legs){
this.vegetarian = veg;
this.eats = food;
this.noOfLegs = legs;
}
public boolean isVegetarian() {
return vegetarian;
}
public void setVegetarian(boolean vegetarian) {
this.vegetarian = vegetarian;
}
public String getEats() {
return eats;
}
public void setEats(String eats) {
this.eats = eats;
}
public int getNoOfLegs() {
return noOfLegs;
}
public void setNoOfLegs(int noOfLegs) {
this.noOfLegs = noOfLegs;
}
}
|
Мұнда animal класы негізгі болып табылады. Енді біз Animal-дан мұра болатын cat класын жасаймыз.
Cat.java
package ua.com.prologistic.inheritance;
public class Cat extends Animal{
private String color;
public Cat(boolean veg, String food, int legs) {
super(veg, food, legs);
this.color="White";
}
public Cat(boolean veg, String food, int legs,String color){
super(veg, food, legs);
this.color=color;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
Extends кілт сөзі мұрагерлікті жүзеге асыру үшін Java-да қолданылады.
Енді Cat сыныбының кейбір әдістерін тексеру үшін қарапайым сынақ сыныбын жазайық.
AnimalInheritanceTest.java
package ua.com.prologistic.inheritance;
public class AnimalInheritanceTest {
public static void main(String[] args) {
Cat cat = new Cat(false, "milk", 4, "black");
System.out.println("Cat is vegetaring?" + cat.isVegetarian());
System.out.println("Cat eats " + cat.getEats());
System.out.println("Cat has " + cat.getNoOfLegs() + " legs.");
System.out.println("Cat color is " + cat.getColor());
}
}
Бағдарламаның орындалу нәтижелерінен Cat сыныбында getEats () әдісі жоқ екенін көруге болады, бірақ ол әлі де жұмыс істейді, себебі ол animal сыныбынан мұраланған.
Результат выполнения программы:
Java
1
2
3
4
|
Cat is vegetaring?false
Cat eats milk
Cat has 4 legs.
Cat color is black
|
Java-дағы мұрагерліктің маңызды сәттері
Private-суперкласс мүшелері ішкі сыныптар үшін қол жетімді емес. Біздің мысалдағыдай, Animal noOfLegs класының айнымалысы Cat класы үшін қол жетімді емес. Дегенмен, бұл мәселе getter және setter әдістерін жасау арқылы шешіледі.
Default (әдепкі) кіру деңгейі бар Ішкі сынып басқа ішкі сыныптарға тек сол пакетте болған жағдайда ғана қол жетімді! Java кіру модификаторлары туралы толығырақ мына жерден оқыңыз.
Суперкласс конструкторлары ішкі сыныптарға мұра емес.
Егер суперкласста әдепкі конструктор болмаса, онда ішкі сыныпта нақты конструктор болуы керек. Әйтпесе, ол compile time exception (компиляция уақытын қоспағанда) лақтырады.
Java бірнеше мұрагерлікті қолдамайды, сондықтан Ішкі сынып тек бір сыныпты мұра ете алады!
Достарыңызбен бөлісу: |