java中子类是否可以访问父类的私有属性

首先子类是无法继承父类的私有属性,也无法直接访问父类的私有属性。

但如果父类中有对私有属性的get和set的方法,而且是public的修饰的方法,

子类在继承父类的同时,也继承了带有public修饰的set和get方法,所以可以通过以下方式子类可以访问到父类的私有属性。

package test;

class Person{
	private String name;
	public Integer age;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	
	
}

class Student extends Person{
	
}

public class Test {
	public static void main(String[] args) {
		Student s = new Student();
		
		s.age = 12;
		s.setName("小明");
		
		String name = s.getName();
		System.out.println("name = "+ name);
		
	}
}

输出结果截图:


通过调用子类中从父类那里继承的set和get方法来访问父类中私有属性name。

但是要记住,子类并非继承到父类的私有属性name,子类只是继承了父类的非私有属性,比如以上例子的 age 属性。

虽然子类可以通过以上的方法可以访问父类的私有属性,但是在做java题时,一般说子类可以方法父类的私有属性这些说法都是错误的。

要注意一点,如果父类中没有对私有属性的 get 和 set 方法或者其他对私有属性操作的方法,又或者这些方法都被private修饰,

这样子类是无法访问到父类的私有属性的。

 
 

猜你喜欢

转载自blog.csdn.net/thanours/article/details/79672019