我可以在 Java 的构造函数中添加多个覆盖方法吗?
Can I add more than one override method in a constructor in Java?
就像下面的例子一样,我在构造函数中添加了两个覆盖方法 build() 和 buildAdd() 。这样可以吗
public class createData {
...
public createData(DataAdd dataAdd){
super(dataAdd);
build();
buildAdd();
}
@Override
public void build(){
...
}
@Override
public void buildAdd(){
...
}
}
我假设你的 class createData
(Java 中的 class 名称应该顺便大写)扩展了其他一些 class 对吗?
为了清楚起见,您不是在构造函数中添加覆盖,而是在 class 中添加覆盖并从构造函数中调用它们。
所以是的,你可以做到,你甚至可以做到:
public class GenericCreateData
{
public GenericCreateData(DataAdd dataAdd)
{
...
build();
buildAdd();
}
public void build()
{
System.out.println("genericBuild");
}
public void buildAdd()
{
System.out.println("genericBuildAdd");
}
}
public class SpecificCreateData extends GenericCreateData
{
public SpecificCreateData(DataAdd dataAdd)
{
super(dataAdd);
}
@Override
public void build()
{
System.out.println("specificBuild");
}
@Override
public void buildAdd()
{
System.out.println("specificBuildAdd");
}
}
调用new GenericCreateData(dataAdd)
将输出:
genericBuild
genericBuildAdd
调用new SpecificCreateData(dataAdd)
将输出:
specificBuild
specificBuildData
因为在特定实例类型上调用了方法
就像下面的例子一样,我在构造函数中添加了两个覆盖方法 build() 和 buildAdd() 。这样可以吗
public class createData {
...
public createData(DataAdd dataAdd){
super(dataAdd);
build();
buildAdd();
}
@Override
public void build(){
...
}
@Override
public void buildAdd(){
...
}
}
我假设你的 class createData
(Java 中的 class 名称应该顺便大写)扩展了其他一些 class 对吗?
为了清楚起见,您不是在构造函数中添加覆盖,而是在 class 中添加覆盖并从构造函数中调用它们。
所以是的,你可以做到,你甚至可以做到:
public class GenericCreateData
{
public GenericCreateData(DataAdd dataAdd)
{
...
build();
buildAdd();
}
public void build()
{
System.out.println("genericBuild");
}
public void buildAdd()
{
System.out.println("genericBuildAdd");
}
}
public class SpecificCreateData extends GenericCreateData
{
public SpecificCreateData(DataAdd dataAdd)
{
super(dataAdd);
}
@Override
public void build()
{
System.out.println("specificBuild");
}
@Override
public void buildAdd()
{
System.out.println("specificBuildAdd");
}
}
调用new GenericCreateData(dataAdd)
将输出:
genericBuild
genericBuildAdd
调用new SpecificCreateData(dataAdd)
将输出:
specificBuild
specificBuildData
因为在特定实例类型上调用了方法