0
点赞
收藏
分享

微信扫一扫

Java核心之多态

多态解析:

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

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

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

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

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

举报

相关推荐

java之多态

java之多态(六)

java之多态(五)

Java之多态详解

Java-面向对象之多态

c++之多态

0 条评论