原文链接
场景
去商场买电子产品(父)(手机。电脑等),我们决定买 一台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