java - 子类中的override方法未被调用

时间:2016-02-26 10:35:26

标签: java override

我有一个子类,它有一个方法,进程覆盖父类中的方法,但它调用父类中的方法,而不是子类中的方法。

父类

public class Records {
    protected String[] process(String table, Integer records, String field) throws Exception {
    System.out.println("***************process- original");
    }

    public void insertRecords {
    Records r = new Records()
    String[] records = r.process(table, records, field);
        String record = records[0];
       /* method implementation */
    }
}

子类

public class RecordsCustomer extends Records{
    @Override
    protected String[] process(String table, Integer records, String field) throws Exception {
    System.out.println("***************process- subclass");
}

打印出'******* process - original'而不是'******* process - subclass'。我错过了一些东西,但我在代码中看不到它。

4 个答案:

答案 0 :(得分:0)

您的RecordsCustomer类不是Record

的子类
public class RecordsCustomer extends Records {
    protected String[] process(String table, Integer records, String field) throws Exception {
        System.out.println("***************process- subclass");
    }
}

以这种方式调用它,它应该按预期工作

Records records = new RecordsCustomer();
records.process("table", 1, "data");

答案 1 :(得分:0)

确保在创建对象并调用方法时

Records records = new RecordsCustomer();
String[] s = records.process(....);

而不是:

Records records = new Records();
String[] s = records.process(....);

答案 2 :(得分:0)

如果你打电话如下所示(即真实对象需要是子类),那么它应该工作:

   Records records = new RecordsCustomer();
   records.process("tableName", 10, "customerName");

注意:为了安全起见,请在测试前进行干净的构建。

答案 3 :(得分:0)

以这种方式创建对象:

RecordsCustomer myObjectName = new RecordsCustomer();

Records myObjectName = new RecordsCustomer();

在你的代码中你的方法声明它们返回一个字符串数组,但是方法本身没有返回任何东西,你应该返回一个String数组或将de声明更改为void