Az encapsulation elvbe beletartozik az is, hogy a class constructorjában egy setter-rel állítunk be a egy propertyt?
Java nyelv
PL.:
public class People {
private int height;
private String name;
public void setHeight(int height) {
this.height = height;
}
public void setName(String name) {
this.name = name;
}
// Constructor - itt a lényeg
public People(int height, String name) {
setHeight(height); // tehát itt nem ez: this.height = height;
setName(name);
}
}
Az egészre dob egy Warningot is, hogy vigyázz mert ez a metódus felülírható (setHeight)
Csak azért is vagyok kíváncsi, mert pl C# -ban:
public string Name { get; set; }
this.Name = name; // és itt ez pl metódussal történő változtatás lenne, hiszen meghívja a SETTERT
-----------------------------------------------------------------------------------------
A másik kérdésem, ha csinálnék egy SubClass-t pl: Boy néven és nem akarom pl a Nevet beállítani a Super Construktorral, akkor elfogadott az a tény hogy a SuperClassból egy settert hívok? (super.setName(name);)
public class Boy extends People {
public int strength;
public Boy(String name, int strength) {
super.setName(name); // emiatt nem akarok külön konstruktort a People classba és csupán csak meghívok egy settert
this.strength = strength;
}
}
Most nézem, hogy a 2. kérdésemnél lehetne használni
super.setName(name) helyett a this.setName(name) metódust is
Self-encapsulation-nek hívják, és szerintem beletartozik.
Más kérdés, hogy ezt mennyire tartják be, mert rengetegszer nem. (most ez arra vonatkozik, hogy ha csak egy helyen nincs betartva, akkor már az egész nem ér sokat, kivéve a setter/getter)
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!