孩子不继承其父母的某些特性/行为?

时间:2019-06-14 13:10:40

标签: java oop inheritance

我扩展了一个类,并向孩子添加了1个带有getter和setter的属性。

现在,我在调试器中看到,这个新的子类没有使用其父类的某些属性。

含义:当我使用父级时,这些属性通过了,但是对于子级,它们为null / 0。但是,并非所有属性都为空。

我很好奇-通过扩展原始类,是否应该在新的子类中继承所有原始行为?

一些代码示例:

sort

孩子:

const a = [
  {
    "Grid": {
       "Day": [
          11,
          12
       ]
     },
     "Name": "One"
  },
  {
    "Grid": {
       "Day": [
          5,
          2
       ]
     },
     "Name": "Two"
   }
]

const daySum = ({Grid}) => Grid.Day.reduce((prev, curr) => prev+curr, 0)

const sorted = [...a].sort(daySum)

console.log(sorted)
console.log(a) //Original array intact

父级上没有构造函数,任何继承者都应该被继承。我想念什么?

1 个答案:

答案 0 :(得分:1)

ParentLensRequest唯一的属性是intervals,即private。尽管ChildLensRequest实例确实具有intervals字段(因为ChildLensRequest的实例是ParentLensRequest的实例),但是ChildLensRequest中的代码无法看到它,因为private。 (ParentLensRequest中的代码可以在子实例上看到它,而在代码类中则看不到。)

如果您希望子类能够以自己的代码与intervals进行交互,请为其提供更宽的访问级别(例如protected)。