Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 限制构造函数访问_Oop_Scala - Fatal编程技术网

Oop 限制构造函数访问

Oop 限制构造函数访问,oop,scala,Oop,Scala,我有一种像这样的类型 sealed class Foo[A](val value: A) object Foo { def apply[A](v: A)(implicit num: Numeric[A]): Foo[A] = /* highly complex stuff to make a Foo[A] */ implicit def toA[A](x: Foo[A]) = x.value } Foo因为类只应该保存值,所以隐式数字没有多大意义。但是我需要A的

我有一种像这样的类型

sealed class Foo[A](val value: A)

object Foo {
    def apply[A](v: A)(implicit num: Numeric[A]): Foo[A] =
      /* highly complex stuff to make a Foo[A] */

    implicit def toA[A](x: Foo[A]) = x.value
}
Foo
因为类只应该保存值,所以隐式数字没有多大意义。但是我需要
A
的类型始终是数字


因此,我的想法是使它不可能在它的同伴之外使用
Foo
s普通构造函数。这在Scala中可能吗?

是的,因为伴生对象可以访问伴生类的私有成员,所以只需将主构造函数(如果有辅助构造函数的话)设为私有。 此处的伪代码:

class ConcreteFoo private (n: Int) extends Foo(n)

我从来没见过你能在那里放一个私人房间。谢谢