答案是不可以。
不妨做个假设,若不能被继承,那么子类只能调用setter或者getter方法来访问父类的private属性,同时父类也可以访问自己的private属性,因此若子类通过super.set方法来设置父类的private属性时,子类通过get方法得到的也应该是父类那个private私有属性,即如果在没调用子类setter方法来设置private属性信息,子类依然可以通过getter方法得到父类的prvate属性信息,若为null,则证明能被继承。若能继承,父类设置自己的私有属性,子类通过getter方法得到的应该是null。代码如下:
public abstract class Phone {
private String name;
private double price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public void playGame()
{
System.out.println("打游戏");
}
public abstract void call();
}
public class Apple extends Phone {
@Override
public void call() {
super.setName("手机");
super.playGame();
System.out.println("打电话");
}
public static void main(String[] args) {
Phone p = new Apple();
p.call();
//p.setName("苹果X");
System.out.println(p.getName());
}
}
运行结果:
打游戏
打电话
手机
从运行结果看,子类没有设置自己的name属性,但依然可以获取到private属性,可以看出private是无法继承的。