不想战斗 2022-03-09 12:03 采纳率: 33.3%
浏览 223
已结题

父类作为形参,子类作为实参传递只能拿到父类参数

talk is cheap show me the code
// 父类
class QueryParam {
    private String A;
    private String B;
}

// 子类
class SonQueryParam extends QueryParam {
    private String C;
    private String D;
}

// 接口
public interface IAuditService{
             List<A> getRecordList(QueryParam queryParam);
}

// controller
public A list(SonQueryParam queryParam) {
       // 调用接口方法,传子类作为实参
       auditService.getRecordList(queryParam));
}

// service 实现上面接口
public class service implements IAuditService {
          @Override
          public A list(QueryParam queryParam) {
           // 调用接口方法,传子类作为实参
           queryParam.getC() // 此处保错
           // 如果使用
           // SonQueryParam param = (SonQueryParam) queryParam;
           // 报QureyParam cannot be cast to SonQueryParam错误
            
          }
}

怎么样才能拿到子类的参数?
  • 写回答

2条回答 默认 最新

  • 测试,创始人 2022-03-09 13:17
    关注

    你这是拿到不了子类的形参的,因为对象的引用是父类,只能拿到父类中的参数,无法使用多态。只有子类继承了父类并且重写了父类的方法后,才能通过父类的引用使用子类中的方法,这是多态。你可以搜一搜JAVA中多态的使用,看看就明白了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月9日
  • 已采纳回答 3月9日
  • 创建了问题 3月9日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!