java核心之多态

简介: 最早学一个变量------>内存空间(小容器) 只有一个 后来学一个数组------>内存空间(小容器) 存储一组一样的数据类型 好处是在于堆内存中存储的地址连续 便于循环遍历 数组创建时必须指定长度 频繁的添加或删除元素 个数固定就很不方便 再后来学习如何描述类--->利用自己描述的类ArrayBox创建对象(小容器) 存储一组元素 长度对于使用者来讲是可变的 便于循环遍历(底层就是数组) 频繁的在ArrayBox中插入元素 从中间位置删除元素 性能不高 上次学习利用链式结构--->利用自己描述的类LinkedBox创建对象(小容器) 存储一组

多态解析

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

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

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

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

再后来学习如何描述类--->利用自己描述的类ArrayBox创建对象(小容器) 存储一组元素

 长度对于使用者来讲是可变的    便于循环遍历(底层就是数组)

 频繁的在ArrayBox中插入元素   从中间位置删除元素   性能不高

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

 长度对于使用者来讲是可变的    双向链表结构  (底层实现Node对象 节点)

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

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

代码示例:

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

//为了将所有的box规则统一起来  让使用者用起来更加方便publicinterfaceBox{
publicbooleanadd(element);添加到末尾publicvoidadd(intindex,intelement);  在给定的位置中插入一个元素publicvoidaddAll();   将给定的box中所有的元素添加至我们现在的box中publicintget(index);
publicintremove(index);
publicintsize();
  }

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

 每一个子类都实现同一个规则   用户使用起来很容易

 如果按照上述的方式来实现   规则添加了新的方法   所有的子类都跟着添加新的方法

 设计模式

 适配器模式  Adapter

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

 缺省适配器模式

publicabstractclassAbstractBoximplementsBox{
publicbooleanadd(element);
publicvoidadd(intindex,intelement){//具体化//抛出自定义异常    }
publicvoidaddAll(){//具体化//抛出自定义异常    }
publicintget(index);
publicintremove(index);
publicintsize();
publicvoidrangeCheck(intindex){
if(index<0||index>=size){
自定义的异常    }
    }
  }


publicclassArrayBoxextendsAbstractBox{
属性用来存储真实数据elementDate[]
属性用来记录有效元素个数intsize;
publicbooleanadd(element){
//1.确保数组内部容量//2.将element元素存入数组的最后位置  size++//3.返回一个true告知用户添加成功    }
publicintget(index){
//1.检测index范围是否合法//2.将index位置的元素从数组中取出 并返回    }
publicintremove(index){
//1.检测index范围是否合法//2.获取index位置上的元素----保留起来//3.从index开始至size-1位置   将后面元素逐一前移覆盖//4.最后有效的那个元素删掉  --size//5.保留起来的旧元素返回    }
publicintsize(){
//return this.size;    }
  }
//这是一个自定义的类型----节点publicclassNode{
Nodeprev;
intitem;
Nodenext;
  }
publicclassLinkedBoxextendsAbstractBox{
属性存储首节点first属性存储尾节点last属性存储有效元素的个数sizepublicbooleanadd(element){
//找一个人 将element添加在链表末尾//告知添加成功    }
publicintget(index){
//检测index是否合法//找一个人  帮我们找到index位置的那个Node对象//将node中item数据返回    }
publicintremove(index){
//检测index是否合法//找一个人  帮我们找到index位置的那个Node对象//找一个人  帮我们将node对象删除   将删掉node对象中的旧数据返回//将旧数据返回    }
publicintsize(){
返回有效元素的个数    }
  }
目录
相关文章
|
7天前
|
Java
Java 新手入门:Java 封装、继承、多态详解
Java 新手入门:Java 封装、继承、多态详解
17 1
|
6天前
|
Java
Java多态初探
Java多态初探
10 0
|
6天前
|
设计模式 Java 程序员
【Java】多态
【Java】多态
|
1月前
|
Java 开发者
【Java探索之旅】初识多态_概念_实现条件
【Java探索之旅】初识多态_概念_实现条件
43 16
|
1月前
|
Java 数据安全/隐私保护
Java中的类继承与多态详解
Java中的类继承与多态详解
|
1月前
|
Java
Java面向对象 ( 多态 | final关键字 | 接口 )
Java面向对象 ( 多态 | final关键字 | 接口 )
|
2月前
|
安全 Java
深度解读Java的继承和多态的特性
深度解读Java的继承和多态的特性
|
2月前
|
Java 编译器
Java多态(如果想知道Java中有关多多态的知识点,那么只看这一篇就足够了!)
Java多态(如果想知道Java中有关多多态的知识点,那么只看这一篇就足够了!)
|
2月前
|
Java 数据安全/隐私保护
Java基础之类封装、继承、多态
Java基础之类封装、继承、多态
21 4
|
2月前
|
Java 数据安全/隐私保护
Java基础之类封装、继承、多态
Java基础之类封装、继承、多态
20 2