为什么不能覆盖静态方法?
如果可能,请举例说明.
我想知道:
我有一个在基类中定义的静态方法,我想在其子类中重写此方法,是否可能?
我尝试了这个,但它没有像我预期的那样工作.当我创建类B的实例并调用其callMe()方法时,将调用类A中的静态foo()方法.
public abstract class A {
public static void foo() {
System.out.println("I am base class");
}
public void callMe() {
foo();
}
}
Public class B {
public static void foo() {
System.out.println("I am child class");
}
}
Run Code Online (Sandbox Code Playgroud) 据我所知,你不能在接口体中声明静态方法.但是,我不小心在http://docs.oracle.com/网站上发现了一些特殊的代码.这是链接
Namelly
public interface TimeClient
{
void setTime(int hour, int minute, int second);
void setDate(int day, int month, int year);
void setDateAndTime(int day, int month, int year,
int hour, int minute, int second);
LocalDateTime getLocalDateTime();
static ZoneId getZoneId (String zoneString) {
try {
return ZoneId.of(zoneString);
} catch (DateTimeException e) {
System.err.println("Invalid time zone: " + zoneString +
"; using default time zone instead.");
return ZoneId.systemDefault();
}
}
default ZonedDateTime getZonedDateTime(String zoneString) {
return ZonedDateTime.of(getLocalDateTime(), getZoneId(zoneString));
}
} …Run Code Online (Sandbox Code Playgroud)