前言:在做练习题时看到一道题,当时想的是,这个被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();
}
}