写点什么

Java 核心之多态

作者:魏铁锤
  • 2022-10-17
    广西
  • 本文字数:1584 字

    阅读完需:约 1 分钟

多态解析:

最早学一个变量------>内存空间(小容器) 只有一个

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

好处是在于堆内存中存储的地址连续 便于循环遍历

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

再后来学习如何描述类--->利用自己描述的类 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 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 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 class Node{    Node prev;    int item;    Node next;  }  public class LinkedBox extends AbstractBox{    属性存储首节点first    属性存储尾节点last    属性存储有效元素的个数size
public 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(){ 返回有效元素的个数 } }
复制代码


发布于: 刚刚阅读数: 5
用户头像

魏铁锤

关注

代码创造奇迹 2022-06-13 加入

一个爱写代码的小伙

评论

发布
暂无评论
Java核心之多态_java 编程_魏铁锤_InfoQ写作社区