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(){
返回有效元素的个数    }
  }
目录
相关文章
|
4天前
|
Java
Java中的继承和多态是什么?请举例说明。
Java中,继承让子类继承父类属性和方法,如`class Child extends Parent`,子类可重写父类方法。多态允许父类引用指向子类对象,如`Animal a = new Dog()`,调用`a.makeSound()`会根据实际对象类型动态绑定相应实现,增强了代码灵活性和可扩展性。
14 0
|
4天前
|
设计模式 Java
Java基础—笔记—多态、final、抽象类、接口篇
该文介绍了编程中的多态、final和抽象类、接口相关概念。多态允许子类重写父类方法,通过父类引用调用子类方法,实现解耦和提高代码灵活性,但也可能导致无法使用子类特有功能,需通过强制类型转换解决。final用于修饰不可变的类、方法或变量,防止继承、重写和多次赋值。抽象类是一种包含抽象方法的类,用于强制子类重写特定方法,实现多态,适用于模板方法设计模式,解决代码重复问题。
22 0
|
4天前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
21 3
|
4天前
|
Java
【Java】一个简单的接口例子(帮助理解接口+多态)
【Java】一个简单的接口例子(帮助理解接口+多态)
20 0
|
4天前
|
Java
java多态详解
java多态详解
29 0
|
4天前
|
Java 程序员 编译器
Java继承与多态知识点详解
本文主要讲解的是Java中继承与多态的知识点
C4.
|
4天前
|
Java
Java多态
Java多态
C4.
14 0
|
4天前
|
安全 Java 数据库连接
【Java每日一题】——第四十三题:编程用多态实现打印机.。分为黑白打印机和彩色打印机,不同类型的打印机打印效果不同。
【Java每日一题】——第四十三题:编程用多态实现打印机.。分为黑白打印机和彩色打印机,不同类型的打印机打印效果不同。
55 0
|
4天前
|
Java 编译器
【Java开发指南 | 第二十六篇】Java多态
【Java开发指南 | 第二十六篇】Java多态
15 1
|
4天前
|
Java
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态