被prinvate修饰的变量继承问题

前言:在做练习题时看到一道题,当时想的是,这个被private修饰变量被创建在父类(Base)中,然后通过class Derived extends Base来继承Base中的某些变量,然后就想着能再public static void main(String[] args) 中直接调用,但是去idea上跑一跑,发现不正确,为什么呢?然后通过一些方式找到了答案!

1.题目:

让我们判断该代码能否编译成功,如若能结果是?如若不能,回答不能就可以了(正确答案

可以看到父类:Person,子类:Child,Child继承了Person中的name和age变量,其中name变被private修饰,是只能在当前类中使用且不能再静态方法中访问(非静态中可以访问), 故这里明显可以看到直接在public static void main(String[] args)中去直接访问了私有变量name,所以这个题的答案就是不能。

2.其他方式:

private在其他类中访问的方式访问,可以通过在类中创建set(无返回值)与get(有返回值,返回值类型为变量的类型)方法来间接访问被private所修饰的变量

例如:

class Person{
    private int age ;
    public void setAge(int my_Age){
        this.age = my_Age;
    }
    public int getAge(){
        return this.age;
    }
}
class Child extends Person{

    public int b = 10;
    public void fun() {
        //这里传入了一个值,可以传入想要的值
        setAge(10);
        System.out.println(getAge());
    }
}
public class test {

    public static void main(String[] args) {
        Child child = new Child();
        child.fun();
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值