首页 > 编程语言 > Java核心之多态

Java核心之多态

时间:2023-05-23 19:32:28浏览次数:62  
标签:index Java int 核心 元素 多态 element public size

多态解析:

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

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

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

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

再后来学习如何描述类--->利用自己描述的类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
		属性存储有效元素的个数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(){
			返回有效元素的个数
		}
	}

标签:index,Java,int,核心,元素,多态,element,public,size
From: https://blog.51cto.com/u_15770393/6334120

相关文章

  • Scrum的三个角色及其核心职责
    •Scrum 团队由一名产品负责人、Developers和一名 ScrumMaster 组成•Scrum 团队是跨职能的自组织团队,团队具备完成项目工作的所有能力。产品负责人 –PO的核心职责其核心职责有:•规划产品的方向和路线图,决定产品要做什么。•清晰的将产品的路线图、需求传递给开发团队。•......
  • Scrum的三个角色及其核心职责
    ​•Scrum 团队由一名产品负责人、Developers和一名 ScrumMaster 组成•Scrum 团队是跨职能的自组织团队,团队具备完成项目工作的所有能力。产品负责人 –PO的核心职责其核心职责有:•规划产品的方向和路线图,决定产品要做什么。•清晰的将产品的路线图、需求传递给开发......
  • [Java]instanceof和getClass()的区别
    getClass()willbeusefulwhenyouwanttomakesureyourinstanceisNOTasubclassoftheclassyouarecomparingwith. classA{}classBextendsA{}Objecto1=newA();Objecto2=newB();o1instanceofA=>trueo1instanceofB=>false......
  • java api调用kafka
    已经启用了zookeeper和kafka单机的ip为192.168.80.128加入maven的pom.xml代码如下 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>0.8.2.1</version&g......
  • 2023.5.21学习内容 多态、接口、泛型、反射
    下午1.了解CSS响应式布局和兼容性问题2.浏览IDEA使用手册并修改Maven仓库设置3.复习强化JavaSE的多态、接口、泛型、反射知识importorg.junit.Test;importtest.Hello;importjava.lang.reflect.Field;importjava.util.ArrayList;importjava.util.LinkedList;import......
  • Java图像二值化,并裁去白边
    手写签名场景,为更符合签名效果,节省服务器存储空间,将原图二值化后,再将多于空白去裁去。java中图像二值化有个小技巧,能够很方便将图像二值化,不用再重费心思去研究二值化过程,技巧在这个参数BufferedImage.TYPE_BYTE_BINARY 1packagecom.test;23importjava.awt.Color;......
  • 【Java Web】MultipartFile和byte[]互转
    接口接收文件@RequestParam("file")MultipartFilefileMultipartFile转byte[]Stringname=file.getName();StringoriginalFilename=file.getOriginalFilename();StringcontentType=file.getContentType();Stringbytes=file.getBytes();byte[]转Multipar......
  • javascript中的错误类型
    javascript中的错误类型:SyntaxErrorTypeErrorReferenceErrorRangeErrorURLErrorErrorSyntaxError语法错误//当您在编写一个函数时忘记了括号,)来括起您的代码,您将收到一个SyntaxError错误functionsay(text){returntext;}say('shark';//outputUncaug......
  • java.sql.SQLException: Access denied for user 'root'@'localhost' (using password
    org.apache.ibatis.exceptions.PersistenceException:###Errorqueryingdatabase.Cause:java.sql.SQLException:Accessdeniedforuser'root'@'localhost'(usingpassword:YES)###Theerrormayexistincom/itheima/mapper/BrandMapper.j......
  • org.springframework.data.annotation.Transient 和 javax.persistence.Transient 的
    1、org.springframework.data.annotation.Transient 和 javax.persistence.Transient 都是用于标记一个属性不需要被持久化到数据库中的注解。它们的区别在于它们所处的框架和使用场景。org.springframework.data.annotation.Transient 是SpringDataJPA框架提供的注解,用......