相关疑难解决方法(0)

为什么我们不能在子类中分配较弱的权限

我有一个类,它有一个方法,默认情况下访问说明符是public.现在,我想在子类中扩展此类,并且我想覆盖此方法以使访问说明符为"private".编译此代码时,我收到编译错误:

"尝试分配较弱的访问权限".

有人可以向我解释在子类中分配较弱的权限有什么问题吗?

以下是导致编译错误的代码:

class Superclass 
{
    void foo() 
    {
        System.out.println("Superclass.foo");
    }
}

class Subclass extends Superclass 
{
    private void foo() 
    {
        System.out.println("Subclass.foo");
    }
}
Run Code Online (Sandbox Code Playgroud)

java inheritance

12
推荐指数
3
解决办法
1万
查看次数

这些scala方法中下划线用法之间的差异

这些代码中这些下划线用法之间有什么区别和术语名称:(参见handler(resource)部分)

1.

def readFile[T](f: File)(handler: FileInputStream => Byte => T): T = {
    val resource = new java.io.FileInputStream(f)
    try {
        val hh = handler(resource)_
        hh(2)
    } finally {
        resource.close()
    }
}

val bs = new Array[Byte](4)

readFile(new File("scala.txt")) {
    input => b: Byte => println("Read: " + (input.read(bs) + b))
}
Run Code Online (Sandbox Code Playgroud)

我收到编译错误:

Error:(55, 29) _ must follow method; cannot follow Byte => T
            val hh = handler(resource)_
                        ^
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

2.

def readFile[T](f: File)(handler: FileInputStream => Byte => T): …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala

6
推荐指数
1
解决办法
957
查看次数

scala中def,val,lazy val和var之间的所有重要规则是什么?

在Scala中,有四种成员修改,即def,val,lazy val,var.关于覆盖的规则看似复杂且不一致,例如,def可以被覆盖val,而不是相反.很高兴看到所有这些规则的完整列表.

oop overriding scala

3
推荐指数
1
解决办法
711
查看次数

为什么scala在定义函数时使用=运算符

我是斯卡拉的新手.我一直在研究java.使用=运算符在scala中定义函数对我来说没有意义.

def abc(a:Int,b:Int):Int = 
    a+b
Run Code Online (Sandbox Code Playgroud)

谁能解释一下?在上面的代码中,为什么我必须使用=运算符.

scala

-4
推荐指数
1
解决办法
81
查看次数