0

我试图了解一个基于 java 的开源项目,它有一个代码段,如

protected SimpleBinaryModel(ExampleSet exampleSet, double threshold) {
    super(exampleSet);
    this.threshold = threshold;
}

虽然我大致可以猜到这个函数的目的是如何实现的,但我不太明白将这个函数定义为“protected”并将“exampleSet”定义为“super”的原因。从 OO 设计的角度来看,以这种方式定义它们的一般优势是什么?

此外,this.threshold = threshold;目标是什么?

4

4 回答 4

2

这不是一个函数。这是一个constructor

super(exampleSet);表示基类有一个带有 ExampleSet 参数的构造函数。

this.threshold = threshold;用参数的值初始化当前类的阈值字段threshold

于 2013-04-18T19:27:56.880 回答
2
  1. “protected”关键字声明该方法只能被派生类或声明类引用。去阅读在 Java 中,默认、公共、受保护和私有之间的区别

  2. “super”正在调用父类的构造函数。

  3. this.threshold = threshold 将输入参数分配给对象实例的本地数据成员。

您可能想阅读一些基本的 Java 教程。

于 2013-04-18T19:29:13.453 回答
1

Aprotected constructor意味着其他类不能使用实例化对象new,通常还有另一种方法来构建它们的实例(如工厂方法)。因为它是受保护的,子类仍然可以覆盖它。

于 2013-04-18T19:29:17.530 回答
0

SimpleBinaryModel是一个构造函数。

super(exampleSet)正在调用超类构造函数。它必须始终是第一行。

protected可以被同一个包的类和任何包中的子类访问。

于 2013-04-18T19:28:19.920 回答