Java核心之多态

发布时间:2023-05-24 09:22:49

多态解析:

首先学习一个变量------>只有一个内存空间(小容器)

后来学了一个数组------>存储空间(小容器)存储一组相同类型的数据

其优点是堆内存中连续存储的地址 便于循环遍历

创建数组时,必须指定长度 元素的频繁添加或删除 固定个数很不方便

后来,我学会了如何描述类别--->用自己描述的ArrayBox创建对象(小容器)存储一组元素

对用户来说,长度是可变的 便于循环遍历(底层是数组)

元素经常插入ArrayBox 删除元素从中间位置 性能不高

上次学习使用链式结构--->用自己描述的类LinkedBox创建对象(小容器)存储一组元素

对用户来说,长度是可变的 双向链表结构 ((底层实现Node对象 节点)

更适合插入元素或删除元素

每个node对象的地址不是连续的 循环效率相对较慢

为了方便使用Box--->定义一个规则----->定义接口

///统一所有box规则  public使用起来更方便 interface Box{  public boolean add(element);添加到末尾  public void add(int index,int element);  在给定位置插入一个元素  public void addAll();   在我们现在的box中添加给定box中的所有元素  public int get(index);  public int remove(index);  public int size();

有了box,可以做统一的规则约束

每个子类都实现相同的规则 用户很容易使用

按照上述方法实现的 规则增加了新的方法 所有子类都遵循添加新方法

设计模式

适配器模式 Adapter

定义一个规则--->和尚 吃斋 念经 打坐 撞钟 习武

缺乏适配器模式

public abstract class AbstractBox implements Box{  public boolean add(element);  public void add(int index,int element){//具体化  //抛出自定义异常  }
public class ArrayBox extends AbstractBox用于存储真实数据elementdate[]用于记录有效元素个数  int size;public boolean add(element){//1.确保数组内部容量//2.将element元素存储在数组的最后位置  size++//3.返回true通知用户添加成功}public int get(index){/1.检测index的范围是否合法//2.从数组中取出index位置的元素 并返回}public int remove(index){//1.检测index的范围是否合法//2.获取index位置上的元素-保留//3.从index到size-1位置   将后面的元素逐一前移覆盖//4。删除最后有效的元素  --size//5.保留的旧元素返回}public int size(){//return this.size;}}  public void addAll(){//具体化  //抛出自定义异常  }  public int get(index);  public int remove(index);  public int size();  public void rangeCheck(int index){  if(index<0 || index>=size){    异常的自定义  }  }}
///这是一种自定义类型-节点public class Node{Node prev;int item;Node next;}public class LinkedBox extends AbstractBox{属性存储首节点first属性存储尾节点last属性存储有效元素的sizepublic boolean add(element){//找人 将element添加到链表末尾//通知添加成功}public int get(index)///检测index是否合法//找个人  帮助我们找到index位置的Node对象///返回node中的item数据}public int remove(index)///检测index是否合法//找个人  帮助我们找到index位置的Node对象///找到一个人  帮助我们删除node对象   返回node对象中删除的旧数据//返回旧数据}public int size(){返回有效元素的数量}

上一篇 #yyds干货盘点# LeetCode程序员面试金典:二叉树的最小深度
下一篇 关于多个项目使用同一个nacos的解决方法

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题