从scala中的父类继承构造函数

时间:2016-03-26 17:18:31

标签: scala

我正在尝试理解从另一个类继承一个类的语法,似乎我必须在创建子项时声明父类的构造函数参数?

为什么这段代码无法编译?

data.frame

但这确实

  class Animal(name:String)
  class Dog extends Animal //Here is where compiler error occurs

他们有必要明确说出 class Animal(name:String) class Dog(name:String ) extends Animal(name) 而不仅仅是extends Animal(name)并隐含构造函数吗?

2 个答案:

答案 0 :(得分:3)

Scala语言规范没有(据我所知)讨论原因,但提供隐含的构造函数将是一个特殊情况,并且可以说不太明确。

请注意,您可以执行以下操作:

class Animal(name:String)
class Dog extends Animal("Dog")

class Animal(name:String)
class Dog(n1: String, n2: String) extends Animal(n1 + n2)

因此,当前的行为以统一和明确的方式适应各种模式。

答案 1 :(得分:0)

假设您有a的两个构造函数:

   #pragma omp parallel for private(i,j,a,nextSudokuNum)
   for(i = 0; i < 9; i++)
   {
      // all private variables must be set internal to parallel region before being used
      nextSudokuNum = 1;

      for(j = 0; j < 9; j++)
      {
         a = 0;
         while(sudoku[i][a] != nextSudokuNum) {
            a++;
            if(a > 9) {
               rowReturn[i] = false;
            }
         }

         nextSudokuNum++;
      }
   }

您希望Animal使用哪一种?