2022-07-25 第六小组 张宁杰 面向对象:多态
目录
多态
多态的形成有三个条件
第一种多态形式:(向上转型)
第二种多态形式:(向下转型)
instanceof关键字
匿名对象
知识点
多态:
编译看左边,运行看右边
披着羊皮的狼
Dog dog = new Dog();
Cat cat = new Cat();
Animal animal1 = dog;
Animal animal2 = cat;
多态的形成有三个条件:
1.有继承
2.有重写
3.有父类对象指向子类引用
说到底就是把类之间的is关系落实
第一种多态形式:(向上转型)
父类 父类对象 = new 子类();
Object obj = new Person();
第二种多态形式:(向下转型)
发生向下转型的前提:要先发生向上转型,才能通过强转再转成子类类型
instanceof关键字:
判断某一个对象是否是某一个类的实例,返回值是boolean类型
if(animal instanceof Cat){
Cat cat = (Cat) animal;
cat.catchMouse();
}else if(animal instanceof Dog) {
Dog dog = (Dog) animal;
dog.look();
}else {
System.out.println("我不养...");
}
多重if容易有逻辑缺陷
匿名对象
通常配合构造器使用
语法: new 类名();
功能:和正常的有名字的对象的功能是相同的。依然具备了调用属性,方法的功能
使用场景:多数是在传参,实参,多数情况下配合构造器使用
好处:节约栈的资源
new Dog().setName("黑黑");
new Dog().setAge(1);
数组是不是类:
1.站在JVM的角度看,是类,在JVM解析数组时,会生成一个数组的解析数组。
2.站在编译角度看,不是类,因为没有类名,没有结构。
链表:是一个数据结构
分为单向链表,循环链表,线性表。
它是一个含有n>=0个起点的有序数列,有且只有上一个节点,有且只有一个下一个节点
单向链表:在维护一个节点的自身的同时,还要维护下一个节点指向
双向链表:在维护一个结点的自身的值得同时,还要维护它的上一个和下一个值的指向
学习感受
今天的学习难度主要集中在链表的构造上,多态较为简单,但也需要练习将知识点吃透。理解链表的原理,并将其熟练运用才是今天学习的重点。