1、面向对象、什么是对象、对象和类的关系
什么是面向对象:万事万物皆为对象
对象和类的关系:类是用来描述对象的
对象是根据类来创建的
对象:属性+功能
类:属性+方法
2、创建对象 以及使用对象中的属性和方法
类名 对象名 = new 类名();
对象名.属性;
对象名.方法();
3、重载:同类中方法名相同,参数列表不同,返回值类型可同可不同
调用重载方法时,根据参数决定具体使用的方法
4、构造函数:是一个特殊的函数,与类名相同 无返回值类型
每个类中最少有一个构造函数,默认有一个无参的构造
任写一个构造函数都会把默认的无参构造覆盖掉
构造函数可以重载,在创建对象时执行
格式:
public 类名([参数]){
}
作用:初始化对象
5、三大特征:
封装、继承、多态
封装:私有化属性,给私有属性提供公开方法
1、私有化属性:private
private int sid;
2、提供公开方法:
取值方法:
public int getSid(){
return sid;
}
赋值方法:
public void setSid(int sid){
this.sid = sid;
}
继承extends:子类继承父类中所有非私有属性和方法。构造函数不会被继承
public class 子类 extends 父类{
}
Java中是单继承,一个类只能有一个直接父类
Java中任何类都直接或间接继承于Object
子类可以有自己独有的属性和方法
子类可以重写继承的方法
重写:继承关系下,子类中的方法与父类中的方法名相同,返回值类型相同,
参数列表相同
多态:一个对象,多种形态
创建多态格式:
父类 对象名 = new 子类([参数]);
引用类型 引用对象 = new 实际类型([参数]);
引用对象调用方法时只能调用到子类重写的方法和父类中有的方法
如果有重写方法:会调用重写方法
this、super
this:当前对象
this.属性;
this.方法([参数]);//同类中一般直接调用方法:方法([参数]);
this([参数]);当前对象的构造函数
super:父类对象
super([参数]);父类的构造函数
super.属性;父类的属性
super.方法名(参数);父类的方法
每一个构造函数中都默认有一个无参的super();
super([参数])和this([参数]);不能同时出现,但是可以同时存在
6、static:静态 共享
用static修饰的属性 和 方法称为静态属性 和 静态方法
静态属性和方法调用:
类名.属性;
类名.方法名([参数]);
静态代码块:加载类时 优先执行
static{
代码块;
}
常量final:最终值,只能且必须赋值一次
[static] final 数据类型 常量名 = 值;
7、抽象abstract:
抽象方法:
只有方法的定义,没有方法实现
抽象类:
用abstract修饰的类,就是抽象类。
抽象类中可以有抽象方法也可有普通方法
抽象类不能实例化对象,但是可以做引用类型
8、接口interface:接口不是类,是一种协议。纯粹的做方法定义(发布任务)
比抽象类更抽象:接口中只能有抽象方法和静态常量
接口不能实例化对象,但是可以做引用类型
实现:implements
接口中的抽象方法由类来实现:
public class 类名 implements 接口{
实现方法;
}
一个接口可以同时继承多个接口
一个实现类可以同时实现多个接口
9、异常exception:异常不是错,是意外
异常分类:
运行异常(未检查异常):
RuntimeException以及子类的都为未检查异常
可处理可不处理
编译异常(检查异常)
Exception 以及子类(不包括RuntimeException)都属于
检查异常
必须处理
处理方式:
1、抛出:不处理的处理方式
在方法名后 throws 异常类型
2、try:常规使用的处理方式
try{
可能出现异常的代码块;
}catch(异常类型 异常对象){
处理方式;
}finally{
不管有么有异常 这里的代码都会执行
}
多层级捕获异常时(catch)应该先小后大,或者同级。
自定义异常:
1、创建类 继承任意异常类
2、构造异常信息:通过构造函数
使用自定义异常:
throw 异常对象;