2022-07-25第十组薛雯匀
1.今天讲了面向对象的三大特征之多态。比较的抽象。
2.刚放了假,活力慢慢!
多态(两个类之间一定要有继承关系):
父类指向子类
Animal animal = new Cat();
编译看左边运行看右边
多态的形成有三个条件:
1.有继承
2.有重写
3.有父类对象指向子类引用
第一种多态的形式:向上转型(可以自动转)
父类 父类对象 = new 子类();
第二种:向下转型
子类 子类对象 = new 父类();
发生向下转型的前提,要先发生向上转型,才能通过强转再转成子类类型
instanceof(实例)关键字:判断某一个对象是否是某一个类的实例,返回值是boolean类型
匿名对象:
new dog();
通常是配合构造器的
语法:new 类名
功能:和正常的有名字的对象的功能是相同的
依然具备了调用属性,方法的功能
使用场景:多数是用在传参,实参,多数情况下配合构造器使用
好处:节约资源
基本数据类型和引用数据类型除了包装器类型以外没关系
数组是不是类?
1.站在JVM的角度是类,在JVM解析数组时,会生成一个数组的类解析数组
2.站在编译角度就不是类,因为没有类名,没有结构。
链表:是一个数据结构
在内存中,数组和链表都是最基本的数据结构,表,或者线性表
线性表,线性的结构,它是一个含有n>=0个节点的有限数列
有且只有一个上一个结点,有且只有一个下一个结点
说人话,有头有尾的一条线
单项链表:在维护一个结点的自身的值的同时,还要维护它的下一个值的指向
双向链表:在维护下一个结点的自身的值的同时,还要维护它的上一个和下一个值的指向
构建链表:
抽象方法,没有大括号(没有方法体)。
abstract抽象
抽象方法存在的意义?
根本意义,约定。自定义的规则。
约定了返回值,访问权限,参数列表,需要在重写的时候去定义方法体。
约定大于配置,配置大于编码
抽象方法必须在一个抽象类里。
1.当我们定义一个抽象类,这个抽象类里可以有哪些结构?
属性,成员方法,构造器,抽象方法,常量
2.抽象类中能不能没有抽象方法?
抽象类可以没有抽象方法
3.抽象类是不能被实例化的。
抽象类不能创建对象。
4.抽象类的构造器存在的意义
为了约定子类的构造器必须和父类的要匹配
5.一个类如果继承了一个抽象类就必须重写这个抽象类的所有抽象方法
abstract能修饰什么?
类,方法,
抽象方法不能用private修饰。开发中抽象方法基本上都是public。
用final修饰的方法是不能重写的。
抽象类不能用final修饰。用final修饰的类不能被继承
总结:
1.抽象方法必须是public或protected
抽象类不能被直接实例化,需要依靠子类采用向上转型的方式处理。
抽象类必须有子类,使用extends继承,一个类只能继承一个抽象类。
4,。子类(如果不是抽象类)则必须重写抽象类中的所有抽象方法
(如果子类没有实现父类的抽象方法,必须将子类也定义为abstrct)
浙公网安备 33010602011771号