当前位置: 首页 > news >正文

现代化专业群建设专题网站护理专业/百度我的订单app

现代化专业群建设专题网站护理专业,百度我的订单app,dw网页设计代码案例,买个app需要多少钱这个是公司前辈问过一个问题? 继承的上下转型是怎么理解的? 所以来学习了 – 这篇文章是翻译理解,也是看的别的博主的,个人爱好喜欢记笔记,君共勉 接口Electronics电子产品类 package com.numberone.web.TestMainMethod; publi…

这个是公司前辈问过一个问题?
继承的上下转型是怎么理解的?
所以来学习了 –

这篇文章是翻译理解,也是看的别的博主的,个人爱好喜欢记笔记,君共勉


接口Electronics电子产品类

package com.numberone.web.TestMainMethod;
public interface Electronics {
}

Keyboard键盘类实现接口Electronics类(我这里理解是实现父类接口 0 0 ,后面用于泛型的集合存储 实现上下转型的一个过程,)
Keyboard里有一个 input方法(这里方法是应证后面 向下转型子类会丢失 自己的方法问题)

package com.numberone.web.TestMainMethod;
public class Keyboard implements  Electronics {//使用键盘输入public void input(){System.out.println("我是键盘输入");}
}

Mouse鼠标类实现接口 Electronics类 里面也有方法,我就不解释了

package com.numberone.web.TestMainMethod;public class Mouse implements Electronics {//鼠标移动public void move(){System.out.println("我是鼠标移动方法");}//鼠标点击public void onClick(){System.out.println("我是鼠标的点击事件");}
}

Thinkpad笔记本类 实现接口 Electronics电子产品 类

package com.numberone.web.TestMainMethod;public class Thinkpad implements Electronics {//Thinkpad引导方法public void boot(){System.out.println("我是Thinkpad");}//使用Thinkpad编程public void program(){System.out.println("我是Thinpad program");}
}

测试类 Test

package com.numberone.web.TestMainMethod;public class Test  {//final 修饰基本数据类型和 string 引用类型的时候 值不变   引用集合  map的时候 可以修改值  但是不能修改内部结构public static final int PD = 0;public static final int SB = 1;public static final int JP = 2;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());//开始测试thinkpad电脑Thinkpad thinkpad = (Thinkpad)shopcar.getListItem(0);thinkpad.boot();thinkpad.program();System.out.println("-------------------");//开始测试Mouse鼠标Mouse mouse = (Mouse)shopcar.getListItem(1);mouse.move();mouse.onClick();System.out.println("-------------------");//开始测试Keyboard键盘Keyboard keyboard = (Keyboard)shopcar.getListItem(2);keyboard.input();}
}

主要实现的一个场景是:我们去商场购买电子产品, 电子产品类别很多 ,鼠标,笔记本,键盘电视机等等…这些都是电子产品的子类别,我们去买鼠标,笔记本,键盘很多电子产品,购物就需要一个购物车,这里就是购物车类ShopCar 里面的集合就是存东西的,存各个电子产品.

ShopCar购物车类

package com.numberone.web.TestMainMethod;import java.util.ArrayList;public class ShopCar {private ArrayList<Electronics> eslist=new ArrayList<Electronics>();public void add(Electronics electronics){eslist.add(electronics);}public int getSize(){return eslist.size();}public  Electronics getListItem(int position){return eslist.get(position);}
}

List 集合是用来存放电子产品的,add 方法用来添加电子产品到购物车,getSize 方法用来获取存放的电子产品数量,getListItem 方法用来获取相应的电子产品。

可以看到 List 用了泛型的知识,至于为什么要用泛型?这个不做介绍了,泛型很重要的。
而我觉得比较疑惑的是为什么是放 Electronics 的泛型,而不是放Thinkpad,Mouse,Keyboard,Phone等?
那么如果是List,肯定是放不进鼠标Mouse的吧,难道要生成3个集合?这里是定义了3个电子产品类,但是我如果有100种电子产品呢,要定义100个集合?
这太可怕了。所以之前,我们写了一个Electronics接口,提供了一个Electronics的标准,然后让每一个Electronics子类都去实现这个接口。

实际上这里又涉及到了向上转型的知识点,我们虽然在add 方法将子类实例传了进来存放,但子类实例在传进去的过程中也进行了向上转型
所以,此时购物车里存放的子类实例对象,由于向上转型成Electronics,已经丢失了子类独有的方法, 比如父类有A方法 子类也有A方法结构,但是子类还有独特的C方法,这时候 向上转型就丢失了子类独特的C方法…


以上述例子来分析,Thinkpad实例就是丢失了boot() 和program() 这两个方法,而Mouse实例就是丢失了move()和onClick()这两个方法

举个例子分析就好

//开始测试thinkpad电脑
Thinkpad thinkpad = (Thinkpad)shopcar.getListItem(THINKPAD);
thinkpad.boot();
thinkpad.program();

shopcar.getListItem(THINKPAD)这句代码是获取到Electronics类型的实例不是Thinkpad的实例

通过向下转型,赋值给子类引用

Thinkpad thinkpad = (Thinkpad)shopcar.getListItem(THINKPAD);

这样子类实例又重新获得了因为向上转型而丢失的方法(boot 和program)
总结一下吧,很多时候,我们需要把很多种类的实例对象,全部扔到一个集合。(这句话很重要)
在这个例子里就是把Thinkpad笔记本,Mouse鼠标,KeyBoard键盘等实例对象,全部扔到一个Shopcar购物车集合。
但是肯定不可能给他们每个种类都用一个独立的集合去存放吧,这个时候我们应该寻找到一个标准,接口就是一个标准。这些都是各种电子产品,抽象成电子产品。然后一个Electronics接口就出来了。
在回到刚才,我们把很多种类的实例对象全部扔到一个集合。或许这样比较好理解:把很多种类的子类实例对象全部扔到存放父类实例的集合。
经过了这个过程,子类实例已经赋值给了父类引用(即完成了向上转型),但很遗憾的丢失了子类扩展的方法。
很好的是Java语言有个向下转型的特性,让我们可以重新获得丢失的方法,即强转回子类
所以我们需要用到子类实例的时候,就从那个父类集合里拿出来向下转型就可以了,一样可以使用子类实例对象


下图 有一个person父类 girl是子类 ,person类主要有A方法,girl子类里面有一个A方法,还有一个独特的girl方法,看图理解
在这里插入图片描述
在这里插入图片描述

java向下转型的意义时最大的用处是java 泛型编程
--------Java的集合类都是这样的。

强烈建议下面二个地址结合理解, 二个都要看 然后实践!!!!找了很多发现这二个结合看能理解通!!!
地址1
地址2

http://www.lbrq.cn/news/967789.html

相关文章:

  • 坪地做网站/seo排名哪家有名
  • 广州口碑好的网站建设定制/崇左网站建设
  • 香港网站域名查询/站长工具 忘忧草
  • 零食天堂 专做零食推荐的网站/百度seo收录软件
  • 番禺哪里有做网站的公司/手机刷网站排名软件
  • 网片生产厂家/百度网站优化
  • wordpress登陆页面404/360优化大师app
  • 做网站需要什么图片/铁岭网站seo
  • 网站开发成本包括/windows优化大师提供的
  • 企业设计网站公司哪家好/网络营销事件
  • 做淘宝图的素材搜索网站/天天seo伪原创工具
  • 做设计的网站定制/苏州seo整站优化
  • 网站优化快速排名软件/2345网址导航是什么浏览器
  • 招聘页面设计/官网seo怎么做
  • 企业简介模板word/北京seo网站开发
  • 天津企业网站建设开发维护/sem是指什么
  • 技术支持海安网站建设/百度搜索资源平台官网
  • 企业可以备案几个网站/地推的60种方法
  • 专做韩国代购的网站/百度快速优化软件
  • 长春网长春关键词排名站设计/推广软文案例
  • 网站如何做ip签名图片/外贸建站与推广
  • 如何建设废品网站/常见的网络营销手段
  • 郉台网站建设/竞价推广怎么做
  • 企业网站建设需要的手续/新手学百度竞价要多久
  • pc端网站/长沙本地推广
  • 卖汽车的网站怎么做的/软件开发一般需要多少钱
  • 精品网站建设费用 真好磐石网络/营销策划书模板
  • 朱子网站建设/网站搜索引擎推广
  • 网站模板软件/域名查询官网
  • wordpress汉字验证码/资阳市网站seo
  • kimi-k2-api使用示例
  • Python中的列表list、元组(笔记)
  • 大语言模型:高考志愿填报的“新纪元智能参谋”
  • 希尔排序:突破传统排序的边界
  • Flink实战项目——城市交通实时监控平台
  • Python 基础语法2:组合数据类型、异常