- упражнение
- клас конструктор
- работа с geter и setter
Коментирахме че правилния подход за предпазване на нашите данни е свързан с използване на модификатора за видимост private, пред възможно най-много полета в класа. Това логично повдига въпроса, как можем да ползваме същите полета, при положение че те ефективно са напълно заключени и недостъпни.
Тайната е да ползваме така наречените getters и setters. Въпреки специалните им имена, те не са нищо специално. Просто методи, които ползваме за работа с полета. Заслужили са своята слава, поради факта че са част от всеки клас и спазват еднотипна конвенция:
Целта на setter методите е да присвояват специфична стойност на private поле
public class Product {
private String productName;
public void setProductName(String inputName) {
productName = inputName;
}
}
Целта на getter методите е да връщат private полета, на заинтересовани конструкции
public class Product {
private String productName;
public String getProductName() {
return productName;
}
}
Исползването на setter - методи, задължително има пожелателен характер. Няма как да гарантираме конструирането на правилен обект, без да тропнем с крак и да задължим програмиста да спазва правилата. За щастие добрата баба Java ни дава механизъм за справяне с този проблем, наречен клас конструктор:
- това е специален метод, носещ името на класа в който се намира
- конструктора е задължително с модификатор public
- конструктора няма специално дефиниран връщан тип
public class Product {
public Product() {
}
}
Конструктора се извиква автоматично в момента в който създадем променлива от същия потребителски дефиниран тип
Product buyProduct = new Product();
Рестриктивния елемент, се изразява във възможността да подадем аргументи, които задължително трябва да удовлетворим при инициализиране на променливата.
public class Product {
private String name;
public Product(int productName) {
name = productName;
}
}
Ако стойността не се подаде, резултата ще е катастрофална синтактична грешка
Product buyProduct = new Product("Sample Product");