首页 新闻 会员 周边

面向对象继承特性疑问

0
[待解决问题]

父类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么

过向往的生活的主页 过向往的生活 | 菜鸟二级 | 园豆:204
提问于:2018-09-01 10:47
< >
分享
所有回答(1)
0

这种修饰符叫做访问修饰符,无论是哪种,在new一个对象时,都会开辟内存进行存储,只不过是用代码不能调用而已。访问不到不代表不存在,而是隐藏起来了,在面向对象里这叫做封装。基类构造里对name赋值了,所以就有值了。另注:getName 是公有的,派生类或外部代码是可以调用到的,但getName是在People类内定义的,所以它是可以访问到name字段的。

shenx1ao | 园豆:206 (菜鸟二级) | 2018-09-02 22:18

我理解的还是不够深刻

支持(0) 反对(0) 过向往的生活 | 园豆:204 (菜鸟二级) | 2018-09-03 08:35

从类的可见性去理解的话 更容易理解一些

支持(0) 反对(0) 过向往的生活 | 园豆:204 (菜鸟二级) | 2018-09-03 08:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册