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

1 篇文章 0 订阅
1 篇文章 0 订阅

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 Files\Java\jdk1.8.0_172\bin\java.exe"...
    执行的是父类中的方法!
    wanghan
    
    Process finished with exit code 0

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

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

也就是说用private声明的方法不能被子类覆写,但可以通过父类的方法调用

  • 19
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值