我有一个子类,它有一个方法,进程覆盖父类中的方法,但它调用父类中的方法,而不是子类中的方法。
父类
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'。我错过了一些东西,但我在代码中看不到它。
答案 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
。