向下转型的意义

原文链接
场景
去商场买电子产品(父)(手机。电脑等),我们决定买 一台Thinkpad,一个鼠标和一个键盘(子)。放入购物车同时可以使用并测试产品(向下转型的作用)。

放入购物车

 List<electronics> mlist = new ArrayList<electronics>();
  • 此处用到泛型的知识,因为不用泛型的话,就得弄三个list 。list<Thinkpad> list<mouse>
    list<keyboard>
  • 将三个产品视作电子产品 放入购物车== 向上转型`

测试产品:

  • 向下转型
 Thinkpad thinkpad=(Thinkpad) shopcar.getListItem(0);
        thinkpad.boot();
        thinkpad.program();

这里是引用

1.电子产品

package com.jiang.obj2;

public abstract class electronics {
}

2.Thinkpad

package com.jiang.obj2;

public class Thinkpad  extends electronics{
    //Thinkpad引导方法
    public void boot(){
        System.out.println("welcome,I am Thinkpad");
    }

    //使用Thinkpad编程
    public void program(){
        System.out.println("using Thinkpad program");
    }
}

3.mouse

package com.jiang.obj2;

public class mouse extends electronics {
    //鼠标移动
    public void move(){
        System.out.println("move the mouse");
    }

    //鼠标点击
    public void onClick(){
        System.out.println("a click of the mouse");
    }

}

4.keyboard

package com.jiang.obj2;

public class mouse extends electronics {
    //鼠标移动
    public void move(){
        System.out.println("move the mouse");
    }

    //鼠标点击
    public void onClick(){
        System.out.println("a click of the mouse");
    }

}

5.shopcar

package com.jiang.obj2;

import com.jiang.obj2.electronics;

import java.util.ArrayList;
import java.util.List;

public class shopcar {

    private List<electronics> mlist = new ArrayList<electronics>();
    //此处用到泛型的知识,因为不用泛型的话,就得弄三个list list<Thinkpad> list<mouse> list<keyboard>
    //将三个产品视作电子产品 放入购物车== 向上转型

    public void add(electronics electronics){

        mlist.add(electronics);
    }


    public int getSize(){

        return mlist.size();
    }


    public electronics getListItem(int position){

        return mlist.get(position);
    }
}

6.测试

package com.jiang.obj2;

public class Test {
    public static void main(String[] args) {
        shopcar shopcar=new shopcar();
        shopcar.add(new Thinkpad());
        shopcar.add(new mouse());
        shopcar.add(new keyboard());

        System.out.println(shopcar.getSize());

        //electronics listItem = shopcar.getListItem(0);
        Thinkpad thinkpad=(Thinkpad) shopcar.getListItem(0);
        thinkpad.boot();
        thinkpad.program();
        System.out.println("--------------------------");
        mouse mouse=(mouse) shopcar.getListItem(1);
        mouse.move();
        mouse.onClick();
        System.out.println("--------------------------");
        keyboard keyboard=(keyboard) shopcar.getListItem(2);
        keyboard.input();

    }
}

7.结果

"C:\Program Files\Java\jdk1.8.0_291\bin\java.exe" "-javaagent:D:\IDEA\IntelliJ IDEA 2020.3.3\lib\idea_rt.jar=50289:D:\IDEA\IntelliJ IDEA 2020.3.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_291\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\rt.jar;D:\IDEA_Project\XML\target\classes;C:\Users\JR2002\.m2\repository\org\dom4j\dom4j\2.1.3\dom4j-2.1.3.jar;C:\Users\JR2002\.m2\repository\jaxen\jaxen\1.2.0\jaxen-1.2.0.jar" com.jiang.obj2.Test
3
welcome,I am Thinkpad
using Thinkpad program
--------------------------
move the mouse
a click of the mouse
--------------------------
using Keyboard input

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值