java中私有的属性、静态成员可以被子类继承吗? 10
2个回答
展开全部
静态成员分为静态属性和静态方法,而静态成员是不可以被继承的,因为静态成员是依附于类存在的,它属于类;静态方法在被子类“继承”(实际可以理解为声明了一个跟父类同名的静态方法)后,如果子类将该方法进行了重写,在实例化对象时,如果是子类对象则调用的是子类中该方法的实现方式,如果是父类对象则调用父类中该方法的实现方式。是一种对父类中静态方法的隐藏,但是父类的静态方法一直存在,不会像非静态方法那样,一但发生子类将父类方法重写,不管是子类对象还是父类对象调用该方法都是子类的实现方式;
另一方面,如果子类中静态方法是继承自父类的话,应该是可以用重写@Override进行标记重写的,但在java中不允许在子类中与父类同名同参的静态成员前使用该注解,这也说明了子类中的静态方法不是继承自父类,而是一种声明;
另外所有父类中的非静态成员都可以被子类继承,private等成员访问控制符,只限定子类是否可以调用该成员,不限定是否可以被继承
另一方面,如果子类中静态方法是继承自父类的话,应该是可以用重写@Override进行标记重写的,但在java中不允许在子类中与父类同名同参的静态成员前使用该注解,这也说明了子类中的静态方法不是继承自父类,而是一种声明;
另外所有父类中的非静态成员都可以被子类继承,private等成员访问控制符,只限定子类是否可以调用该成员,不限定是否可以被继承
展开全部
先说结论:
父类的任何成员变量都是会被子类继承下去的。
只是由于private不能被公开访问,所以无法被子类访问,但是实质上是已经继承的。
为了讲明白这个问题,我们来做个测试:
public class Father {
private String name;
private static int sex;
public String age;
//getter and setter
}
public class Son extends Father{
public static void main(String[] args) {
Son son = new Son();
son.age="25";
son.getSex();
son.getAge();
}
}
可以看到通过get方法获取父类中的静态和private属性,这就证明了一点继承是所有父类中的属性的,但是private和静态是无法访问的,我们可以通过getter/setter方法去获取其中的值,这算一种中间的方法吧。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询