20200929_陈宇_

日志

学习总结:

多态:

​ 一个特定类型的变量,可以引用多个不同类型的对象,并且能自动调用引用对象的方法。也就是 说根据引用对象的不同,响应不同的操作

​ 方法重写是多态的基础

​ 在继承中,子类拥有和父类相同的方法称为重写

​ 多态中,变量引用的是哪个对象,就执行的是哪个对象中相对应的方法

​ 父类类型出现的地方,子类都可以出现(使用)

向上转型:

​ 多态就是说一个父类可能有多个子类,每个子类都重写了父类的方法,当父类调用方法时,父类引用指向的是哪个子类,就执行哪个子类的方法,所以形成了父类引用调用相同的方法时,有不同的实现

​ 父类引用只能调用父类中有的方法(子类继承自父类的方法/重写的方法)

​ 父类引用不能调用子类扩展的方法(独有的方法)

向下转型:

​ 由父类类型转换成子类类型,称为向下转型。必须要进行强制类型转换

​ 注意:首先要判断是否属于要强转的类型( instanceof ),如果不属于会报 java.lang.ClassCastException

实现多态的条件:

​ 1.要有继承关系

​ 2.父类引用指向子类对象(向上转型)

​ 3.子类要重写父类的方法

多态的应用:

​ 特点:

​ 1.可替换性 2.可扩充性 3.接口性 4.灵活性 5.简化性

​ 多态的使用:

​ 1.接口 2.重写 3.抽象类

​ p.getInstance() 调用的是 Dog 类中的方法,因为在 Dog 类中重写了 Pet 中的 getInstance() 方法,且调用实例方法看的是哪个对象调用就执行哪个对象中的方法,也就是说 by Class

​ p.staticMethod() 调用的是 Pet 类中的方法,因为 staticMethod() 是 static 方法,属于 类。虽然 Dog 类中隐藏了父类的方法,但是调用 static 方法看的是类型,也就是说 by type

​ 可以简单的说,调用 static 方法看左边,调用实例方法看右边

抽象类:

​ 声明抽象类:用关键字 abstract

​ 抽象方法是没有具体实现(没有方法体)的

​ abstract 不能和 final 一起使用

​ 抽象类/抽象方法作用就是定义规范

​ 如果一个类继承了抽象类,那么这个类必须重写它的抽象方法,或者将类声明为抽象类 抽象类是有构造方法的,但是不能被实例化

​ 构造方法、类方法( static )不能声明为抽象( abstract )方法

​ 一个类中只要含有抽象方法,这个类就必须是抽象类;抽象类不一定含有抽象方法

​ 抽象类和普通类的区别:

​ 1.抽象类有 abstract 修饰

​ 2.抽象类中可以有抽象方法

​ 3.抽象类不能被实例化,需要抽象类变量引用其子类的对象

抽象方法和普通方法的区别:

​ 普通方法:

​ [修饰符] 返回值类型 方法名([参数列表]){

​ //方法体

​ }

​ 抽象方法:

​ [修饰符] abstract 返回值类型 方法名([参数列表]);

​ 区别:

​ 1.抽象方法有 abstract 修饰

​ 2.抽象方法没有方法体

​ 3.抽象方法无法执行

​ 4.抽象方法不能用 private 修饰

接口:

​ 可以说接口是一个特殊的抽象类

​ 接口不能被实例化,而且没有构造方法

​ 定义接口:

​ [修饰符] interface 接口名{

​ //接口成员

​ }

​ 接口中的方法默认是抽象方法,所以可以省略 abstract 修饰符

​ 接口中的方法默认都是 public 的,所以可以省略 public

​ 接口中的变量只能是静态常量( static final ),所以可以省略 static final ,静态常量在定义时就要 赋值,且不可变

​ 使用接口:

​ 1.一个类可以实现多个接口,接口之间使用 , 隔开

​ 2.接口的实现类中,可以有普通方法

​ 3.实现的方法必须是 public 的

一个类可以同时继承和实现接口, extends 要在 implements 之前

接口与接口之间是继承关系,使用 extends 关键字。多个接口使用 , 隔开

​ jdk8接口新特性:

​ 在 jdk8.0 中 default 关键字可用于在接口中修饰方法(默认方法), default 修饰的方法可以有具体实现,也只能在接口中出现,default 修饰的方法可以被重写

​ 接口中还可以有 static 修饰的方法,称为静态方法(类方法)。类方法可以直接使用接口名.方法名调用

学习心得:

​ 今天似乎打瞌睡有点凶,可能是天气突然好了起来,好多东西没听到,休息时间和晚自习请教了一下班上比较厉害的同学,好像有些东西又能明白了,老师布置的作业也加班加紧的完成了,但是就是不晓得是否正确。

标签

评论

this is is footer