1. 类与对象 1.1 面向对象的思想
万事万物皆对象
1.2 面向对象的过程面向过程: 在意的是一个个的过程
面向对象: 在意的是一个个对象的结果
类: 是一个模板,有各个维度(类是对象的抽象)
对象: 是通过各个维度来具体描述一件事物(对象是类的具体)
作用: 1. 创建对象 2. 初始化对象
创建规范:
1. 必须与类名一致
2. 没有返回值
3. 可以使用 return 但没有意义
4. 不能使用 static 修饰
注意:每个类默认隐式存在一个无参构造,如果显示创建了构造方法,那么隐式的失效
1.5 构造方法的重载
1. 方法名相同,参数列表不同
2. 方法签名(个数,顺序,类型)
定义: 没有名字的对象,只能使用一次
1.7 生命周期概念: 对象的生命周期 开始: 调用构造方法,创建对象的时候开始 结束: 失去引用,被垃圾回收机制回收的时候结束2. 封装 2.1 包
概念: 就是文件夹,用来区分文件
规范:1. 域名倒写 2. 项目名 3. 模快名
例:cn.这里写域名.oa.test
test -----> 测试 domain-----> 业务
注意:包名全部小写
java.lang包下的类无需导包
可以使用通配符 * 表示任意个数
不能导入相同类名的路径
导包:
关键字: import 包名.对象名
全限定名:解决了什么问题----->在一个类中不能导入两个类名相同的包
包名.类名 对象名 = new 包名.类名();
2.2 封装
概念: 提高安全性,通过 get 与 set 来操作属性
Javabean的规范(封装步骤):
1. 将属性私有化
2. 给每个属性提供 get 与 set 方法
boolean类型的 get 改为 is
set 与 get 后面的属性名字首字母大写
3. 必须存在一个无参构造方法
2.3 this
this : 表示当前对象地址值
作用:
1. 解决成员变量与局部变量之间的二义性
2. 调用构造方法
3. 可以当做参数传递
4. 可以当做返回值返回
5. 可以调用普通方法
3.继承
3.1 继承
继承的概念: 将相同的属性或者行为抽离出来,创建一个新类,这个类称之为 父类
继承关键字: extends
可以继承那些: 成员变量 方法 静态方法
特点:
1. 单继承
2. 多重继承
每个类默认隐式继承Object类,如果显示继承了其他类,那么不再继承Object类
执行方式:
在子类中找---->父类中找---->Object中找
(如果Object中也没有则程序会报错)
3.2 Object
所有类的父类
3.3 方法重写 什么情况下重写:
父类中的方法不能满足子类需求的时候,此时可以重写父类的方法
注意:
1. 方法名和参数列表要一致
2. 子类的访问权限修饰符 大于等于 父类
3. 父类的返回类型 大于等于 子类
(基本数据类型保持一致)
3.4 访问权限修饰符
public ----> protected ----> 默认 ----> private
3.5 super表示父类地址值
1. 子类的构造方法中调用父类的构造方法
2. 子类中调用父类的方法
3.6 toString
为什么要重写?
因为调用的是 Object 的 toString 方法为地址值,我们的需求是显示所有属性的值,所以需要重写方法。
3.7 equals
为什么要重写?
因为调用的是 Object 的 toString 方法为地址值,我们的需求是比较对象属性值是否相等
3.8 抽象类与抽象方法
抽象类:
本质上还是一个类,可以当做模板使用
抽象类中可以存在:成员变量 方法 静态方法 构造方法 抽象方法
抽象方法: 只有方法的声明,没有具体的实现代码
注意:抽象方法只能存在抽象类中(目前)
4. 多态
4.1 接口
概念: 类似类的结构,是一种规范,没有具体的实现
好处: 便捷,安全,拓展,重要
命名规范:
接口名: 前面加 I
实现类: 后面加 impl
接口中可以存在: 成员变量(全局常量必须赋值) 抽象方法 静态方法
创建方式:
1. 直接创建
2. 将 class 改为 interface
接口的关系(特点):
接口与类:
1. 可以同时继承与实现
2. 可以同时实现多个接口
接口与接口:
1. 多继承
2. 多重继承
抽象类与接口的关系
相同点:都有抽象方法
不同点:
抽象类:
本质上还是一个类,可以当模板使用
存在:成员变量,方法,静态方法,抽象方法,构造方法
接口:
与类相似的结构,是一种规范,没有具体的实现
存在:成员变量,静态方法,抽象方法
4.2 多态
概念: 一种事物(父类/接口),多种形态(子类/实现类),屏蔽子类差异化
屏蔽差异化解决方式:
1. instanceof : 判断左边是否为右边的对象
2. 字节码 : 对象名.getClass(); 类名.Class
语法:
父类 对象名 = new 子类();
接口 接口名 = new 实现类();
接口为什么不能实现接口?
因为接口里的方法是抽象方法,不能存在普通方法,所以无法具体的代码实现
5. 查漏补缺
5.1 static
表示: 静态的 , 会被 JVM 优先加载 修饰: 成员变量, 方法, 内部类 注意:会被所有实例所共享5.2 final
表示: 最终的, 不能改变与拓展 修饰: 外部类: 不能继承 方法: 不能重写 成员变量: 必须赋值,不能改变 内部类: 不做研究 局部变量: 可以不赋值, 但是只能一次赋值5.3 内部类
定义: 写在类中的类
会不会创建字节码文件?
会 字节码文件名: 类名$数字.class
5.4 匿名内部类
概念: 没有名字的内部类,只能使用一次 为什么要用?------->可以少创建类 什么情况可以使用匿名内部类? 需要方法重写的情况下都可以使用5.5 代码块
1. 普通代码块 : 写在方法或者结构体中
2. 构造代码块 : 写在类中
3. 静态代码块 : 写在类中,被 static 修饰,会优先加载,会执行一次
5.6 全局常量
创建方式:
1. 普通类中 public static final 数据类型 常量名 = 值;
2. 接口中
3. 枚举
注意: 常量名全大写
5.7 枚举
概念: 与类相似的结构 可以存在: 成员变量,静态方法,全局常量,构造方法 枚举默认隐式继承: Enum 重写 toString 来显示通过构造方法传递的值



