一.对象和封装
1.类是对象的类型,对象是类的实例
2.方法重载
在一个类中定义多个方法名相同但是参数列表和返回值不同的方法
3.static关键字
static修饰符可以用来修饰属性、方法和代码块
用static修饰的成员不再属于对象,而属于整个类
适用于团体属性
static关键字修饰的属性允许通过对象调用,并且允许通过对象修改
在给方法添加静态关键字static时,该方法调用的变量必须全部为静态变量
在非静态方法总允许调用静态属性,反之不允许
final 代表常量
static、非private修饰 | 非static、private修饰 | |
---|---|---|
属性 | 类属性、类变量 | 实例属性、实例变量 |
方法 | 类方法 | 实例方法 |
调用方式 | 类名.属性 类名.方法() 对象.属性 对象.方法() | 对象.属性 对象.方法() |
归属 | 类 | 单个对象 |
4.封装
- 什么是?
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 - 如何实现?
1)修改类的属性可见性,设为private私有的
2)创建公有的get与set方法,用于属性的读写
3)在get或set方法中加入控制语句,对属性值进行合法性的判断 - 好处?
1)隐藏类的实现细节,调用都不需要知道具体是怎么实现的。
2)只能通过规定的方法访问数据,实现数据的安全性。
3)方便在提供的方法内加入控制语句。
4)方便修改实现。修改实现在内部修改,跟调用都无关。
二.继承
1.继承
1)符号is-a关系
2)使用extends关键字
3)代码复用
4)多重继承关系初始化顺序
父类属性 >父类构造方法 >子类属性 >子类构造方法
5)不能继承的父类成员
2.重写
1)方法名相同
2)参数列表相同
3)返回值类型相同或者是其子类
4)访问权限不能严于父类
3.super关键字
1)super关键字用来访问父类的成员
2)super只能出现在子类的方法和构造方法中
3)super调用构造方法时,只能是第一句
4)super不能访问子类的private成员
4.访问修饰符
访问修饰符 | 本类 | 同包 | 子类 | 其他 |
---|---|---|---|---|
private | √ | |||
默认(friendly) | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
5.抽象类和抽象方法
1)抽象类不能被实例化
2)抽象类可以有0~多个抽象方法
3)非抽象子类必须重写父类的所有抽象方法
4)抽象方法没有方法体
5)抽象方法必须在抽象类里
6)抽象方法必须在子类中被实现,除非子类是抽象类
6.final修饰符
1)修饰的类,不能再被继承
2)修饰的方法,不能被子类重写
3)修饰的变量将变成常量,只能在初始化时进行赋值
三.多态
- 什么是?
同一个引用类型,使用不同的实例而执行不同操作
1)同过父类创建多种类型的子类对象
2)子类实现父类的抽象方法
3)通过父类对象调用子类方法
4)多态中最终执行功能的是子类 - 优点
1)减少类中代码量
2)提高代码的可扩展性和可维护性 - 实现多态几种方式?
1)使用多态实现思路(实现多态的三个要素)
编写具有继承关系的父类和子类
子类重写父类方法
使用父类的引用指向子类的对象
2)实现多态的两种形式
使用父类作为方法形参实现多态
使用父类作为方法返回值实现多态
3)向上转型——子类转换为父类,自动进行类型转换
向下转型——父类转换为子类,结合instanceof运算符进行强制类型转换
四.接口
一个类只能继承一个父类但可以实现多个接口
- 特性
1)接口不可以被实例化
2)实现类必须实现接口的所有方法
3)实现类可以实现多个接口
4)接口中的变量都是静态常量
【属性全都是全局静态常量】
【方法全都是全局抽象方法】
【无构造方法】 - 编码实现
//编写接口
public interface UsbInterface {
void service();
}
//实现接口(多个接口使用“,”隔开)
public class UDisk implements UsbInterface {
public void service() {
System.out.println("123");
}
}
//使用接口
UsbInterface uDisk = new UDisk();
uDisk.service();
五.异常
- 什么是?
异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序 - 如何进行异常处理
Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws
1)try:执行可能产生异常的代码
2)catch:捕获异常
3)finally:无论是否发生异常,代码总能执行
4)throws:声明方法可能要抛出的各种异常
5)throw:手动抛出异常
try {
// 代码段 1
// 产生异常的代码段 2
} catch (异常类型 ex) {
// 对异常进行处理的代码段3
return;
}finally{
// 代码段 4
}
}
public class Test {
public static void divide() throws Exception {
//声明异常,多个异常用逗号隔开
//可能出现异常的代码
}
public static void