java中私有属性能不能被继承?

java中私有属性能不能被继承?

以前的课堂中,老师讲继承的时候说过:子类可以继承父类中的属性和方法。可是当我们写代码的时候却能出现一些不一样的情况。

其原因在什么地方?之后通过代码的验证发现出现在了private的访问控制权限上面,也就只有private的访问控制权限能出现问题。

那为什么private能出现矛盾呢?我们来看:private:私有的,只能在自己本类中使用。而继承是子类继承了父类中的属性和方法。

我们在这两个解释中发现了问题:私有属性能不能被继承的? 针对此问题,我们先来看代码:

class Person {
          
   
    private String name = "wanghan";
    private void print() {
          
   
        System.out.println("执行的是父类中的方法!");
    }
    public void fun(){
          
   
        this.print();
        System.out.println(this.name);
}
class Student extends Person {
          
   
    void print() {
          
   
        System.out.println("执行的是子类中的方法!");
    }
}
public class Main {
          
   
    public static void main(String[] args) {
          
   
        new Student().fun();
    }
}

执行结果为:

"C:Program FilesJavajdk1.8.0_172injava.exe"...
    执行的是父类中的方法!
    wanghan
    
    Process finished with exit code 0

私有属性不能继承,但是可以通过子类继承父类的方法来访问父类的私有属性。

在上述的代码中,分别有一个私有的属性和方法。通过父类中的方法对私有属性进行访问,同理,私有方法我们也是通过父类的方法进行了访问。而在子类中也创建了一个与父类私有方法名字相同,且访问控制权限进行了扩大的一个方法,按理来说应该是子类中的方法对父类中的私有方法进行了覆写,可事实是执行了父类中的私有方法。也就是说子类并没有覆写父类中的私有方法,这是在子类中创建了一个新的方法。所以,父类的访问控制权限是 private 时,子类的访问控制权限是protected或者时public时。此时这也不是方法的覆写。

也就是说用private声明的方法不能被子类覆写,但可以通过父类的方法调用
经验分享 程序员 微信小程序 职场和发展