, o zaman o setSalary(..);
yöntemidir aramasını çalışanın önleyebilirsiniz yolu yoktur. Bu sınıfın başka bir yöntemi ile sınıfın içinde özel bir yöntem de çağrılabilir.
Yapabilecekleriniz: setSalary(..);
'un görünürlüğünü paket seviyesine ayarlayın ve aynı pakette ve diğer tüm paketlerde yalnızca Employee
ve Boss
'u saklayın. Ve sen gibi Boss
şey bir yöntem olurdu Boss
herhangi Employee
için setSalary(..);
bazı yöntem içinde sadece denir dikkat: olacaktır
public class Boss extends Employee {
public void setSalaryFor(Employee employee, int salary) {
employee.setSalary(salary);
}
}
Ve Çalışan sınıfının yöntemi olarak:
public class Employee extends Person {
private int salary;
//Package visibility
void setSalary(int salary) {
this.salary = salary;
}
}
Bu şekilde, yalnızca Employee
ve Boss
numaralı paketlerinizin dışında, Employee
, setSalary(..);
numaralı telefonu arayamaz. çalışanın maaşını güncellemenin tek yolu, Boss
numaralı kamu yöntemini çağırmak ve maaşı ve çalışanı argümana dönüştürmektir.
Sadece Boss sınıfında buna ihtiyacınız varsa, neden üst sınıflarda bildirildiniz? Eğer herhangi bir nedenden dolayı ana derslerde buna ihtiyacınız varsa, bu metodun uygulanmasını boş bırakabilirdiniz, patron dışındaki tüm sınıfları belirtebilirsiniz, sadece patron sınıfı tarafından uygulanan bir arayüze sahip olabilirsiniz ... – cantSleepNow
Mümkün yinelenen: Java'da C++ 'arkadaş' kavramını simüle etmenin bir yolu var mı? (Http://stackoverflow.com/questions/182278/is-there-a-way-to-simulate-the-c-friend-concept- in-java) –
biraz garip, ama arayan sınıfını setSalary'de kontrol edebilirsiniz, bkz. http://stackoverflow.com/questions/11306811/how-to-get-the-caller-class-in-java – Turo