package practice;
class person{
private String firstname;
private String lastname;
public person(String firstname,String lastname){
set_first(firstname);
set_last(lastname);
}
public String get_first() {
return firstname;
}
public void set_first(String firstname) {
this.firstname=firstname;
}
public void set_last(String lastname) {
this.lastname=lastname;
}
public String get_last() {
return lastname;
}
}
class employee extends person{
private int empid;
public employee(String firstname,String lastname,int empid){
super(firstname,lastname);
set_empid(empid);
}
public void set_empid(int empid) {
this.empid=empid;
}
public int get_empid() {
return empid;
}
}
class testing_super_keyword {
public static void main(String args[]) {
employee emp=new employee("John","Jackson",1234);
System.out.println(emp.get_first()+" "+emp.get_last());
System.out.println(emp.get_empid());
}
}
任何人都可以解释,即使已将班级人员“名字”和“姓氏”的属性声明为私有,班级雇员如何继承班级人员?
据我所知,子类不能继承声明为私有的超类变量。
答案 0 :(得分:1)
这被认为是良好的编程习惯,在这种情况下,您不通过使用private access specifiers
来直接访问类的实例变量,而是提供public getter and setter methods
来获取和设置实例变量。 / p>
在这种情况下,您不能直接访问SuperClass的实例变量,但是您声明了public getter and setter methods(get_first, set_first)
,就可以使用它们。
此外,按照Java命名约定,将camelCase名称用于函数。例如,使用getName和son代替get_name。