2022-07-25 第四小组 王星苹 学习笔记
2022/7/25 23:25:42
本文主要是介绍2022-07-25 第四小组 王星苹 学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
学习心得
第二种多态形式(向下转型),子类 子类对象 = new 父类();发生向下转型的前提,要先发生向上转型,才能通过强转再转成子类类型
心情 今天讲链表,和数组不一样,绕起来非常晕,但是后来周围人给我讲明白了 * 多态 * 编译看左边 运行看右边 * 多态形成的三个条件 * 1.有继承 * 2.有重写 * 3.有父类对象指向子类引用 * * 第一种多态形式 (向上转型) * 父类 父类对象 = new 子类(); * * 第二种多态形式(向下转型) * 子类 子类对象 = new 父类(); * 发生向下转型的前提,要先发生向上转型,才能通过强转再转成子类类型 * * instanceof关键字:判断某一个对象是否是某一个类的实例
public class Ch01 { public static void main(String[] args) { Dog dog = new Dog(); Cat cat = new Cat(); Animal animal1 = dog; Animal animal2 = cat; // dog = (Dog)cat; // dog = (Dog) new Animal(); dog = (Dog) animal1; dog = (Dog) animal2; } } public class Ch02 { // 无敌方法 public Object show(Object ... obj){ return true; } @Override public boolean equals(Object obj) { if(obj instanceof Person){ Person person = (Person) obj; } return super.equals(obj); } public static void main(String[] args) { Object obj = new Person(); obj = new Ch02(); Ch02 ch02 = new Ch02(); ch02.show("",1,'a',1.5,true,obj);
* 匿名对象 * 语法: * new类名(); * * 功能:和正常有名字的对象的功能是相同的 * 依然具备了调用属性,方法的功能 * 使用场景:多数是用在传参,实参,多数情况下配合构造器使用 * * 好处:节约资源
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> * 链表 * 在内存当中,数组和链表都是最基本的数据结构,表,或者是线性表 * 线性表,线性的结构,他是一个含有n>=0个结点的有序数列 * 有且只有一个上一个结点,只有一个下一个结点 * 有头有尾的一条线 * 单向链表:在维护一个结点自身的值的同时,还要维护它下一个结点的值指向 * 双向链表:在维护一个结点自身的值的同时,还要维护它的上一个和下一个结点的值的指向 * 多态 * 向上转型:父类对象->子类引用 * 向下转型:子类引用->父类对象 前提,必须先发生向上转型 * * instanceof:判断某一个对象是否是某一个类的实例
public class Ch01 { public Object show(){ return null; } } public class ThatsAll extends Ch01{ public Integer show(){ return null; } }
链表:
package afternoon.test; public class SuperLinked { //链表的长度 private int size; //链表的第一个结点 private Node first; //链表的最后一个结点 private Node last; //无参构造器 public SuperLinked(){ } //把数组添加到链表的尾部 public boolean add(Integer data){ //把传入的数据构建成一个结点 Node node = new Node(data,null); //如果现在链表是空的,那我就是第一个结点 if (first == null){ first = node; }else { //如果链表不是空的,那我就是最后一个结点 //我应该是在原来的last结点后面 //我是原来last结点的下一个结点 last.setNext(node); // last = node; } last = node; size++; return true; } //在指定位置添加数据 public boolean add(int index,Integer data){ Node node = getNode(index); Node newNode = new Node(data,null); if (node!=null){ Node next = node.getNext(); newNode.setNext(next); node.setNext(newNode); }else{ first = newNode; last = newNode; } return true; } //默认删除头部的数据 public boolean removefirst(){ if (size<0){ return false; } if (first!=null){ first = first.getNext(); size--; } return true; } //删除尾部的数据 public boolean removelast(){ if (size<=0){ return false; } if (size<2){ first = null; last = null; size--; return true; } if (last!=null){ last = getNode(size-2); last.setNext(null); size--; } return true; } public boolean remove(int index){ if (size<=0){ return false; } if (size==1){ first = null; last = null; size--; return true; }else { Node node = getNode(index-1); node.setNext(node.getNext().getNext()); } size--; return true; } //修改 public boolean set(int index, Integer data){ Node node = getNode(index); node.setData(data); return true; } //内部 public Integer get(int index){ return getNode(index).getData(); } public Node getNode(int index){ if (index<0){ index=0; } if (index>=size-1){ index=size-1; } //找到第index个 Node cursor = first; for (int i = 0; i < index; i++) { cursor = cursor.getNext(); } return cursor; } } package afternoon.test; /** * 单向链表 */ public class Node { private Integer data; private Node next; public Node() { } public Node(Integer data, Node next) { this.data = data; this.next = next; } public Integer getData() { return data; } public void setData(Integer data) { this.data = data; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } @Override public String toString() { return "Node{" + "data=" + data + ", next=" + next + '}'; } } package afternoon.test; public class Demo { public static void main(String[] args) { SuperLinked superLinked = new SuperLinked(); superLinked.add(1); superLinked.add(2); superLinked.add(3); superLinked.add(1,100);//添加 superLinked.removefirst();//删第一个 superLinked.removelast();//删尾部 superLinked.remove(2);//删除指定下标的元素 System.out.println(superLinked.getNo
☯☯☯☯☯☯☯☯☯☯☯☯
这篇关于2022-07-25 第四小组 王星苹 学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27数据结构与算法面试题详解及练习
- 2024-12-27网络请求面试题详解与实战
- 2024-12-27数据结构和算法面试真题详解与实战教程
- 2024-12-27网络请求面试真题解析与实战教程
- 2024-12-27数据结构和算法大厂面试真题详解与实战指南
- 2024-12-27TS大厂面试真题解析与应对策略
- 2024-12-27TS大厂面试真题详解与解析
- 2024-12-27网站安全入门:如何识别和修复漏洞
- 2024-12-27SQL注入基础教程
- 2024-12-27初学者指南:理解和修复跨域漏洞