父类default修饰的成员变量,非同一个包的子类不能继承该成员变量,那么该变量的属性值可以被继承?继承的到底是属性还是属性的值?
package com.ysdrzp.day01;
public class People {
String name;
public People(String name) {
this.setName(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.ysdrzp.day02;
import com.ysdrzp.day01.People;
public class Student extends People{
public int age;
public Student(int age,String name) {
super(name);
this.age = age;
}
}
package com.ysdrzp.day02;
public class Test {
public static void main(String[] args) {
Student s = new Student(10, "小花");
System.out.println(s.getName());
}
}
输出结果:小花
不应该是null么
这种修饰符叫做访问修饰符,无论是哪种,在new一个对象时,都会开辟内存进行存储,只不过是用代码不能调用而已。访问不到不代表不存在,而是隐藏起来了,在面向对象里这叫做封装。基类构造里对name赋值了,所以就有值了。另注:getName 是公有的,派生类或外部代码是可以调用到的,但getName是在People类内定义的,所以它是可以访问到name字段的。
我理解的还是不够深刻
从类的可见性去理解的话 更容易理解一些