第九天总结笔记
每日一结,方便回顾学习
final关键字、多态、抽象类、接口
final关键字(掌握)、多态(掌握)、抽象类(掌握)、接口(掌握)。
final关键字
(1)是最终的意思,可以修饰类、方法、变量。
(2)特点
A: 它修饰的类不能被继承
B: 它修饰的方法不能被重写
C: 它修饰的变量是一个常量
(3)面试相关:
A:局部变量
基本类型 值不能发生改变
引用类型 地址值不能发生改变但是对象的内容是可以改变的
B:初始化时机
只能初始化一次
常见的给值 定义的时候(推荐);构造方法中
多态
(1) 同一个对象在不同时刻体现出来的不同状态。
(2) 多态的前提
有继承或者实现关系
有方法重写
有父类或者父接口引用指向子类对象
(3) 多态的分类
具体类多态
class Fu { }
class Zi extends Fu { }
Fu f = new Zi ();
抽象类多态
abstract class Fu { }
class Zi extends Fu { }
Fu f = new Zi ();
接口多态
interface Fu { }
class Zi implements Fu { }
Fu f = new Zi ();
(4) 多态中的成员访问特点
A:成员变量
编译看左边,运行看左边
B:构造方法
子类的构造都会默认访问父类构造
C:成员方法
编译看左边,运行看右边
D:静态方法
编译看左边,运行看左边
为什么?因为成员方法有重写。
(5) 多态的好处
提高代码的维护性(继承体现)
提高代码的拓展性(多态体现)
(6) 多态的弊端
父不能使用子的特有功能
现象:子可以当做父来使用,父不能当做子来使用。
(7) 多态的转型
向上转型:从子到父
向下转型:从父到子
抽象类
(1) 把多个共性的东西提取到一个类中,这是继承的做法。多个共性的东西在有些时候方法声明一样但是方法体不一样,也就是说每个具体的对象在具体实现的时候内容不一样。因此我们在定义这些共性的方法的时候就不能给出具体的方法体。一个没有具体方法体的方法就是抽象的方法。在一个类中如果有抽象方法,该类必须定义为抽象类。
(2) 抽象类的特点
A:抽象类和抽象方法必须使用关键字abstract修饰
B:抽象类中不一定有抽象方法,但是有抽象方法的一定是抽象类
C:抽象类不能实例化
D:抽象类的子类:是一个抽象类;是一个具体类,这个类必须重写抽象类中的所有抽象方法。
(3) 抽象类的成员特点
A:成员变量:变量;常量
B:构造方法:有构造方法
C:成员方法:有抽象;非抽象
接口
(1) 对于额外的功能(比如大象转呼啦圈),java提供接口表示。
(2) 接口的特点
A:接口用关键字interface修饰
interface 接口名 { }
B:类实现接口用implements修饰
class 类名 implements 接口名 { }
C:接口不能实例化
D:接口的实现类
是一个抽象类;是一个具体类,这个类必须重写接口中的所有抽象方法
(3) 接口的成员特点
A:成员变量:常量 public static final
B:构造方法:没有构造方法
C:成员方法:只能是抽象 public abstract
(4) 类与类、类与接口、接口与接口
A:类与类:继承关系,只能单继承,可以多层继承
B:类与接口:实现关系,可以单实现,也可以多实现
还可以在继承一个类的同时,实现多个接口
C:接口与接口:继承关系,可以单继承也可以多继承
(5) 抽象类和接口的区别
A:成员区别
抽象类:变量,常量;有抽象方法;抽象方法,非抽象方法
接口:常量;抽象方法
B:关系区别
类与类:继承关系,只能单继承,可以多层继承
类与接口:实现关系,可以单实现,也可以多实现
还可以在继承一个类的同时,实现多个接口
接口与接口:继承关系,可以单继承也可以多继承
C:设计理念不同
抽象类:被继承 is a,共性功能
接口:被实现 like a,拓展功能
来源:CSDN
作者:国足小腿
链接:https://blog.csdn.net/weixin_43135611/article/details/103566476