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
2
3
4
5
6
7
8
9
//com:表示商业性的组织,公司
com.sen.test
//org:开源组织
org.sen.test
//edu:教育组织,学校
edu.sen.test
//gov:政府组织,政府相关机构
gov.sen.test

import:

项目中各个类是需要相互协作,一个类中要使用另外一个类,但是这两个类不在同一个包中,此时就需要使用import关键字将项目导入当前类中

顺序:

package

import

class

继承

好处:提高代码复用性,提高类的扩展性

特点:

  • 子类可以继承父类的属性和方法,private修饰的不能直接调用,但是已经继承
  • 子类也可以新增属性和行为
  • 继承是单继承,一个子类只能直接继承一个父类

方法的重写

  • 方法的名字、参数列表、返回值都要跟父类的方法一致
  • 子类方法的访问权限修饰符不能小于父类的方法
  • 抛出的异常范围可以被缩小,但不能被扩大

构造方法

子类的构造方法会默认调用父类的无参构造方法

super:指代父类对象,可以调用父类的属性,构造方法,普通方法

子类的初始化流程

创建子类对象时,先创建父类对象,再创建子类对象

1
2
3
4
5
6
7
8
9
/*
* 代码块{}
* 有的时候类中可能存在多个构造方法,并且这些构造方法里面有相同代码片段
* 这个时候可以将这些相同的代码片段定义在代码块中
* 代码块中的代码也是用于初始化属性
*
* 特性:
* 代码块中的代码先于构造方法执行,并且每次创建对象都会执行
*/

Object

所有类的父类,一个类如果不继承任何类,那么就会继承Object类

####toString方法

  • Object中的toString方法返回的是对象的地址
  • 一般toString方法重写时,就是将当前类中属性值以字符串形式返回,方便外界查看对象的所有属性值

多态

多态是指对象的多种形态,使用多态可以提高代码的扩展性,适用性

使用多态包含的条件

  • 继承
  • 方法重写
  • 向上转型

类中的属性不参与多态性;

父类引用调用方法时,若子类对该方法进行了重写,那么将执行子类重写后的方法,所以这里体现出多态是运行时多态;

父类引用不能调用子类新增的属性或者方法;

理解上课的两个例子:《开车》和《数据库驱动类》,重点在于为什么这样设计,带来的好处,从而明白多态性的使用