相关疑难解决方法(0)

为什么不通过实例调用静态方法为Java编译器的错误?

我相信你们都知道我的意思 - 代码如下:

Thread thread = new Thread();
int activeCount = thread.activeCount();
Run Code Online (Sandbox Code Playgroud)

引发编译器警告.为什么不是错误?

编辑:

要明确:问题与Threads无关.我意识到在讨论这个问题时经常给出Thread示例,因为它们可能真的搞砸了它们.但问题确实是这样的使用总是无稽之谈,你不能(胜任地)写出这样的电话并且意味着它.这种类型的方法调用的任何例子都是barmy.这是另一个:

String hello = "hello";
String number123AsString = hello.valueOf(123);
Run Code Online (Sandbox Code Playgroud)

这使得它看起来好像每个String实例都带有"String valueOf(int i)"方法.

java methods static

75
推荐指数
4
解决办法
3万
查看次数

方法隐藏和字段隐藏的继承帮助

public class Test
{
    static int i = 1;

    static void m1()
    {
    }
}

class Test1 extends Test
{
    int i = 1;    //allowed 

    void m1()     // not allowed; Both are instance level, so why this difference? Both can be accessed with super keyword
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么静态方法不能用相同的签名隐藏,但允许静态字段执行此操作?两者都是实例级别,那么为什么只允许静态字段?

java inheritance

8
推荐指数
1
解决办法
99
查看次数

标签 统计

java ×2

inheritance ×1

methods ×1

static ×1