美文网首页
【面向对象】基类和派生类运用

【面向对象】基类和派生类运用

作者: 嘻洋洋 | 来源:发表于2019-05-14 15:16 被阅读0次

1. 基本原则

(1)派生类对象可以向基类对象赋值。
所谓赋值只是对数据成员赋值,对成员函数不存在赋值问题。赋值后基类对象不能访问派生类对象的属性和方法(基类中没有)。派生类的属性其实转换到基类,只是不能访问

//GoodsInfoDto对象转换成基类对象jbBaseDto ,属性转换到基类对象
JbBaseDto jbBaseDto = JbCommonService.postForObject(goodsReq,"url",GoodsInfoDto.class);
image.png

(2)基类的对象不能给派生类的对象赋值
因为基类对象不包含派生类的成员,无法对派生类的成员赋值。同理,同一基类的不同派生类对象之间也不能赋值。
根据不能赋值的理由推理:把派生类对象赋值给基类对象,再把基类对象赋值给另外一个派生类对象,这是可以的。经过第一次赋值后,基类对象已经有类派生类对象所有属性,再把基类对象赋值给另外一个派生类对象就没问题。

2. 基类经常用于封装

经常我们需要对公共业务进行封装,基类作为参数,或者作为返回值进行方法封装,特别是在接口开发中最常用,例如:

   //对请求接口进行封装,基类JbBaseReq参数(调用时是派生类) ,基类JbBaseDto 返回值(实际上派生类赋值过)
    public static JbBaseDto postForObject(JbBaseReq jbBaseReq, String url, Class<?> clazz) {
        MultiValueMap<String, String> requestEntity = new LinkedMultiValueMap<>();
        String xmlRequest = XmlUtil.beanToXml(jbBaseReq);
        requestEntity.add("Message", xmlRequest);
        String responseContent ="";
        RestTemplate restTemplate = new RestTemplate();
        try
        {
            responseContent = restTemplate.postForObject(url, requestEntity, String.class);
        }
        catch (Exception e)
        {
            String errMsg = StringEscapeUtils.escapeJava(e.getMessage());
            responseContent = "{\"rtnCode\":\"-1\",\"rtnMsg\":\"" + errMsg + "\"}";
        }
        Gson gson = new Gson();
        return (JbBaseDto) gson.fromJson(responseContent, clazz);
    }

调用方法:基类转换成派生类

 GoodsReq goodsReq = new GoodsReq();
 goodsReq.setHgGoodsNo("310520156160600318");
 GoodsInfoDto goodsInfoDto = (GoodsInfoDto)JbCommonService.postForObject(goodsReq,"url",GoodsInfoDto.class);

相关文章

  • 【面向对象】基类和派生类运用

    1. 基本原则 (1)派生类对象可以向基类对象赋值。所谓赋值只是对数据成员赋值,对成员函数不存在赋值问题。赋值后基...

  • <C++程序设计>访问权限,虚函数,继承

    派生类访问权限 派生类对象的体积 = 基类对象的体积 +派生类对象自己的成员变量的体积 ,派生类对象包含着基类对象...

  • 关于虚函数

    (1)派生类对象直接向基类赋值,赋值效果,基类数据成员和派生类中数据成员的值相同;(2)派生类对象可以初始化基类对...

  • C++ - 继承与派生类

    派生类对象的体积,等于基类对象的体积,再加上派生类对象自己的成员变量的体积。在派生类对象中,包含着基类对象,而且基...

  • C++ - 派生类的构造函数

    派生类的构造函数 派生类对象包含基类 对象 执行派生类构造函数之前,先执行基类的构造函数 派生类交代基类初始化,具...

  • C++ - public继承的赋值兼容规则

    public继承的赋值兼容规则 派生类的对象可以赋值给基类对象 派生类对象可以初始化基类引用 派生类对象的地址可以...

  • 通往死亡之路的python的笔记之类、方法、封装、继承及小实例

    Python 类 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类...

  • C++第五篇继承与派生

    派生类将继承它所有基类中除构造函数和析构函数之外所有成员,因此派生类必须负责调用基类构造函数 对基类成员和成员对象...

  • C#——访问基类的成员

    1.基类与派生类之间的转换C#允许派生类转换为基类,但不允许把基类转换为派生类。这样,一个基类的对象即可以指向基类...

  • 虚析构函数的必要性(C++)

    1.当基类和派生类中都没有虚析构函数时 从运行结果可以看出,当通过基类指针删除派生类对象时,派生类的析构函数根本没...

网友评论

      本文标题:【面向对象】基类和派生类运用

      本文链接:https://www.haomeiwen.com/subject/zcamgqtx.html