final关键字:
- 是最终的意思,可以修饰类,方法,变量;
- 特点:
- 它修饰的类,不能被继承。
- 它修饰的方法,不能被重写。
- 它修饰的变量,是一个常量,只能进行第一次的赋值
- 面试相关:
- 局部变量:
- 基本类型:值不能发生改变。
- 引用类型:地址值不能发生改变,但是对象的内容却是可以改变的。
- 初始化时机
- 只能初始化一次。
- 常见的给值:定义的时候(推荐),构造方法中
- 局部变量:
多态:
- 同一个对象在不同的时刻体现出来的不同状态。
- 多态的前提:
- 有继承或者实现的关系
- 有方法重写
- 有父类或者父接口引用指向子类对象
- 多态的分类:
- 具体类多态(父类调用子类)
- class Fu{}
class Zi extends Fu{}
Fu f = new Zi();
- class Fu{}
- 抽象类多态
abstract class Fu{]
class Zi extends Fu{}
Fu f = new Zi();
- 接口多态
interface Fu{}
class Zi implements Fu{}
Fu f = new Zi();
- 具体类多态(父类调用子类)
- 多态中的成员访问特点
- 成员变量:
编译看左边,运行看左边 - 构造方法:
子类的构造都会默认访问父类构造 - 成员方法:
编译看左边,运行看右边 - 静态方法:
编译看左边,运行看左边
为什么只有成员的方法运行看右边呢?
因为成员方法有重写。
- 成员变量:
- 多态的好处:
- 提高代码的维护性(继承体现)
- 提高代码的扩展性(多态体现)
- 多态的弊端:
父不能使用子的特有功能。
现象:
子可以当做父使用(因为子类的功能比父类多),但是父不能当做子使用。 - 多态的转型
- 向上转型:从子到父
- 向下转型:从父到子
- 孔子装爹的案例帮助大家理解多态
- 多态的练习
- 猫狗案例
- 老师和学生案例
抽象类
- 把多个共性的东西提取到一个类中,这是继承的做法。
但是呢,这多个共性的东西,在有些时候,方法声明一样,但是方法体不一样。
也就是说,方法声明一样,但是每个具体的对象在具体实现的时候内容不一样。
所以,我们在定义这些共性的方法的时候,就不能给出具体的方法体。
而一个没有具体的方法体的方法是抽象的方法。
在一个类中如果有抽象方法,该类就必须定义为抽象类。
- 抽象类的特点
- 抽象类和抽象方法必须时候关键字abstract修饰
- 抽象类中不一定有抽象方法,但是有抽象方法的类一定是一个抽象类
- 抽象类不能实例化
- 抽象类的子类
- 是一个抽象类
- 是一个具体类(但是这个类必须重写父抽象类中的所有抽象方法)
- 抽象类的成员提点:
- 成员变量:
有变量,有常量 - 构造方法:
有构造方法 - 成员方法:
有抽象方法,也有非抽象的方法
- 成员变量:
- 抽象类的练习
- 猫狗案例练习
- 老师案例练习
- 学生案例练习
- 员工案例练习
- 抽象类的几个小问题
- 抽象类有构造方法,而且不能够被实例化,那么构造方法有什么用呢?
用于子类访问父类数据的初始化 - 一个类如果没有抽象方法,却定义为了一个抽象类,有什么用?
为了不让创建对象 - abstract关键字不能和哪些关键字共存
- final 冲突
- private 冲突
- static 无意义
- 抽象类有构造方法,而且不能够被实例化,那么构造方法有什么用呢?
接口
- 回顾猫狗案例,它们仅仅提供一些基本的功能
比如:猫钻火圈,狗跳高等功能,不是动物本身就具备的,
是在后面的培养中训练出来的,这种额外的功能,JAVA提供了接口表示 - 接口的特点:
- 接口用关键字interface修饰
interface 接口名 {} - 类实现接口用implements修饰
class 类名 implements 接口名{} - 接口不能实例化(同抽象类一样,都不许被实例化)
- 接口的实现类
- 是一个抽象类
- 是一个具体类,这个类必须重写接口中的所有抽象方法。
- 接口用关键字interface修饰
- 接口的成员特点:
- 成员变量
只能是常量
默认修饰符:public static final - 构造方法
没有构造方法 - 成员方法
只能是抽象的
默认修饰符:public abstract
- 成员变量
- 类与类,类与接口,接口与接口
- 类与类
继承关系,只能单继承,但是可以进行多层继承 - 类与接口
实现关系,可以单实现,也可以多实现。
还可以在继承一个类的同时,实现多个接口。 - 接口与接口
继承关系,可以单继承,也可以多继承
- 类与类
- 抽象类与接口的区别?
- 成员区别
抽象类:可以是常量,也可以是变量
接口:只能是常量 - 关系区别:
类与类:继承关系,只能单继承,但是可以进行多层继承
类与接口:实现关系,可以单实现,也可以多实现。
还可以在继承一个类的同时,实现多个接口。
接口与接口:继承关系,可以单继承,也可以多继承 - 设计理念不同
抽象类:is a,抽象类中定义的是共性功能。
接口:like a ,接口中定义的是扩展性的功能。
- 成员区别
- 练习:
- 猫狗案例,加入跳高功能
- 老师和学生案例,加入抽烟功能
742

被折叠的 条评论
为什么被折叠?



