this关键字
this:this代表当前类的对象
- 可以调用类型的属性,构造方法里面。getxxx()方法里面
- 调用类中的普通方法
- 在一个构造方法中调用另外一个构造方法
super关键字
super代表父类的对象
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
this和super的不同:
this | super | |
---|---|---|
代表的对象不同 | 本身调用者这个对象 | 代表父类的对象 |
前提 | 没有继承也可以使用 | 只能在继承条件下才可以使用 |
构造方法 | 本类的构造 | 父类的构造 |
面向对象的三个主线
- 类和对象
- 面向对象的三大特性:封装,继承,多态
- 关键字:package,import,final,static
封装
该暴露的暴露,该隐藏的隐藏
封装通过访问修饰符进行实现
本类 | 同一个包 | 子类 | 全局 | |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected(受保护的) | Y | Y | Y | N |
缺省 | Y | Y | N | N |
private | Y | N | N | N |
package & import
package(包):包其实就是文件夹
项目比较复杂,各个功能模块,会创建很多的类,需要把类分门别类的存放,处理网络请求类,工具类。。。
相同功能的类放到一个包中
包的名称:
1 | //com:表示商业性的组织,公司 |
import:
项目中各个类是需要相互协作,一个类中要使用另外一个类,但是这两个类不在同一个包中,此时就需要使用import关键字将项目导入当前类中
顺序:
package
import
class
继承
好处:提高代码复用性,提高类的扩展性
特点:
- 子类可以继承父类的属性和方法,private修饰的不能直接调用,但是已经继承
- 子类也可以新增属性和行为
- 继承是单继承,一个子类只能直接继承一个父类
方法的重写
- 方法的名字、参数列表、返回值都要跟父类的方法一致
- 子类方法的访问权限修饰符不能小于父类的方法
- 抛出的异常范围可以被缩小,但不能被扩大
构造方法
子类的构造方法会默认调用父类的无参构造方法
super:指代父类对象,可以调用父类的属性,构造方法,普通方法
子类的初始化流程
创建子类对象时,先创建父类对象,再创建子类对象
1 | /* |
Object
所有类的父类,一个类如果不继承任何类,那么就会继承Object类
####toString方法
- Object中的toString方法返回的是对象的地址
- 一般toString方法重写时,就是将当前类中属性值以字符串形式返回,方便外界查看对象的所有属性值
多态
多态是指对象的多种形态,使用多态可以提高代码的扩展性,适用性
使用多态包含的条件
- 继承
- 方法重写
- 向上转型
类中的属性不参与多态性;
父类引用调用方法时,若子类对该方法进行了重写,那么将执行子类重写后的方法,所以这里体现出多态是运行时多态;
父类引用不能调用子类新增的属性或者方法;
理解上课的两个例子:《开车》和《数据库驱动类》,重点在于为什么这样设计,带来的好处,从而明白多态性的使用