面向对象
本质:以类的方式组织代码,以对象的组织(封装)数据。
特性:封装、继承、多态
类与对象
类与对象的关系:
-
类是一种抽象的数据类型,它是对某一类事物整体描述
-
对象是抽象概念的具体实例
在不同的类中实例化一个对象:
类名 对象名 = new 方法名();
对象名.参数 //调用类中的参数
-
同一个类可以有不同的多个对象
构造器
形式:
-
一种与类名相同的方法
-
没有返回值
作用:
-
new实例化对象的本质是调用构造方法
-
初始化对象的值
有参构造与无参构造:
-
定义了一个有参构造后,想要调用无参构造需要重新定义无参构造
-
无参构造与有参构造的本质是 方法的重载
Alt+Insert 快捷键:定义构造方法
封装
形式:
-
使用private修饰类中的属性或方法,对应public。
-
被private修饰时无法直接调用类中的属性与方法
调用方法:
-
在对应类中使用get方法
public 数据类型 get属性名(){
return this.属性名;
} -
在主类中调用属性
对象名.get属性名();
给对应属性设置值:
-
在对应类中使用set方法
public void set属性名(数据类型 属性名){
this.name = name;
}
-
在主类中赋值
对象名.set属性名(要赋的值);
快捷键:alt+insert 快捷建立get与set方法
作用:
-
提高程序的安全性,保护数据
-
隐藏代码的实现细节
-
同一接口
-
系统可维护
继承
形式:
-
在子类名后加extends加父类名,子类可以继承父类中的属性与方法
-
可以使用private等修饰词修饰属性与方法给子类继承增加限制
-
调用:
-
可以直接调用子类使用父类的属性与方法,被private等修饰词修饰时除外
快捷键:ctrl+H 查看父类与子类的继承树
-
继承树的最高级父类为Object类,是java自带的类
-
所有类都默认继承Object类
重写
形式:
-
需要有继承关系,子类重写父类的方法
-
方法名必须相同,参数列表必须相同
-
修饰符的范围可以扩大但不能缩小
-
修饰符的范围:public>protected>default>private
-
-
抛出的异常范围可以缩小但不能扩大
作用:子类方法重写父类方法
-
父类方法不一定需要
Alt+Insert 快捷键:快捷建立子类重写
多态
形式:
-
有继承关系,方法需要重写,父类的引用指向子类
father f1 = new son();-
因此被这些修饰词修饰是无法形成多态
-
static 静态方法,属于类不属于对象
-
final 常量
-
private 封装方法,不能被其他类调用
-
-
-
多态是方法的多态,属性没有多态
作用:同一个方法可以根据对象不同采取不同的行为
抽象类
形式:
-
使用abstract关键词修饰类,也可以修饰抽象类中的方法
-
抽象方法只有名字没有方法的实现
特性:
-
抽象类只能由抽象类继承
-
抽象类不能被实例化,只能靠子类去实现
-
抽象方法只能写在抽象类中,但抽象类可以写普通方法
接口
形式:
-
与类对应,类使用class修饰,接口使用interface修饰
特点:
-
接口中的所有定义都是抽象的,即只有名字没有方法的实现
-
接口中的所有方法都默认带public与abstract修饰
-
与抽象类相同接口不能被实例化,但接口没有构造器
实现:
-
接口中的方法使用实现类来实现,实现类的形式为,类名后加关键词implements加接口名
-
实现类中需要重写接口中的所有方法
-
异常
形式:
-
程序运行时出错时会显示出现异常
-
异常类也是类,其父类为throwable,throwable子类为error类与exception类
捕获异常:
-
使用关键字try{}标记需要捕获异常的代码
try
{
需要捕获异常的代码块
}
-
使用关键字catch{}编写需要捕获异常的类型
catch(异常类)
{
代码块
}-
catch可以写多个来捕获不同类型的异常
-
-
使用关键字finally{}做善后工作,无论try与catch是否执行最后都会执行finally
finally
{
代码块
} -
快捷键ctrl+alt+d:快捷生成try/catch/finally关键字
抛出异常:
-
使用关键字throw主动抛出异常,无论程序是否有异常
throw new 异常类()
自定义异常:
-
自定义类继承自exception类,称为自定义异常类
-
重写toString方法打印异常信息,快捷键alt+insert快捷建立toString方法