有人告诉我Java中的静态方法没有继承,但是当我尝试以下测试时

package test1;

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        TB.ttt();
        TB.ttt2();
    }

}
package test1;

public class TA {
static public Boolean ttt()
{
    System.out.println("TestInheritenceA");
    return true;
}
static public String test ="ClassA";
}
package test1;

public class TB extends TA{
static public void ttt2(){
    System.out.println(test);
    }
}

它打印:

测试继承A
A类

Java静态方法(和字段)也具有继承性(如果您尝试调用类方法,它是否沿着继承链寻找类方法)。是不是这样?并且是否有像类方法那样混乱的继承OO语言?

因此,显然静态方法是继承的,但不能被覆盖,因此C#会共享该问题吗?还有其他语言吗?

最佳答案

在Java中,字段和静态方法是继承的,但不能被覆盖-我相信这就是谁告诉你“它们不被继承”的意思。

非私有,非静态方法会被继承,并且可以被覆盖。

09-10 07:53
查看更多