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(){
返回有效元素的个数    }
  }
目录
相关文章
|
3月前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
70 9
|
3月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
42 7
|
3月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
49 5
|
3月前
|
Java 程序员
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
42 5
|
3月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
1月前
|
存储 Java 测试技术
Java零基础-多态详解
【10月更文挑战第10天】Java零基础教学篇,手把手实践教学!
24 4
|
1月前
|
Java 编译器 程序员
Java多态背后的秘密:动态绑定如何工作?
本文介绍了Java中多态的实现原理,通过动态绑定和虚拟方法表,使得父类引用可以调用子类的方法,增强了代码的灵活性和可维护性。文中通过具体示例详细解析了多态的工作机制。
42 4
|
2月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
1月前
|
Java
java继承和多态详解
java继承和多态详解
43 5
|
1月前
|
存储 Java 测试技术
Java零基础-多态详解
【10月更文挑战第1天】Java零基础教学篇,手把手实践教学!
29 1
下一篇
无影云桌面