1.Java官方文档:子类不可以继承父类的私有变量及方法。但是,父类的私有数据的确存在于子类对象中,只是子类无法直接使用,也可以理解为子类仅仅“拥有”父类私有变量及私有方法。
java中子类能继承父类的私有变量和私有方法吗_子类可以使用父类的私有变量吗-CSDN博客
2.子类无法直接访问父类的私有变量及方法,但可以通过getter、setter方法间接访问私有变量
测试代码:
1.父类
public class Person {
private String name;
private int age;
private String gender;
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public void eat(){
System.out.println(this.name + "正在吃饭");
}
private void sleep(){
System.out.println(this.name + "正在睡觉");
}
}
2.子类
public class Student extends Person{
public String school;
public Student(){
}
public Student(String name, int age, String gender){
super();
}
public Student(String name, int age, String gender, String school){
super();
this.school = school;
}
}
3.main
public class testForStudent {
public static void main(String[] args) {
Student stu1 = new Student("小明",15,"男");
stu1.eat();//继承了父类的非私有方法,可访问,输出结果可见,不能直接访问私有变量(输出姓名为null)
//无法访问私有方法的证据:在此处无法调用私有方法sleep
stu1.setName("小明");
stu1.eat();//通过set方法访问私有成员变量
}
}