我有以下两个课程:
public class Prod
{
public void logon(){
System.out.println("'\u000CProd logon");
addUser();
}
public void addUser(){
System.out.println("Prod addUser");
}
}
public class Dev extends Prod
{
public void addUser(){
System.out.println("Dev addUser");
}
public static void main(String[] args){
Dev test = new Dev();
test.logon();
}
}
有没有一种方法可以使所有方法静态化,然后测试Dev.addUser()是否正常工作?
这就是我想要做的:
public class Prod
{
public static void logon(){
System.out.println("'\u000CProd logon");
addUser();
}
public static void addUser(){
System.out.println("Prod addUser");
}
}
public class Dev extends Prod
{
public static void addUser(){
System.out.println("Dev addUser");
}
public static void main(String[] args){
logon();
}
}
当我在Dev中运行main()时,我们应该得到:
产品登录
Dev addUser
答案 0 :(得分:0)
有没有一种方法可以使所有方法静态化,然后测试Dev.addUser()是否正常工作?
不,没有。
这实际上是Java的基础:您想在多态环境中使用静态方法。但是静态方法不是不是多态的。没有真正的继承,没有没有覆盖编写静态方法。有关详细说明,请参见here。重复:不能以纯静态的方式实现所需的输出,而是围绕A类扩展B类。故事的结尾。
正如已经说过的那样:从概念上讲,这也是错误的。由于存在这些限制,因此 static 仅应在Java中谨慎使用。只需使用您现在拥有的非静态代码即可。
不幸的是,您的问题还不清楚您打算测试到底是什么,因此我对此无能为力。