Java学习(五)
第五章 面向对象进阶
5.1 Object类
5.1.1 认识Object类
Java的类:一是Java基础类,二是自定义类。
External Librarys 存放了Java的类。
5.1.2 重写Object类
方法 | 描述 |
---|---|
public String toString() | 以字符串的形式返回该类的实例化对象信息 |
public boolean eauals(Object obj) | 判断两个对象是否相等 |
public native int hashCode() | 返回对象的散列码 |
原生toString()方法会返回对象的类名及散列值,直接打印对象默认调用toString()方法。
equals() 方法时通过内存地址对两个对象进行判断。String类对equals()完成了重写,一次比对字符串中的字符。
5.2 包装类
5.2.1 什么是包装类
Java的数据类型分为:8中基本数据类型和引用类型。
引用类型是通过构造函数new出来的对象。基本类型的数据不是对象,引用类型的数据才能称之为对象。
基本数据类型 | 包装类(java.base\java.lang) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
5.2.2 装箱与拆箱
装箱是指将基本数据类型转为对应包装类对象;
拆箱是指将包装类对象转为对应的基本数据类型。
-
public Type(type value)
用来实例化包装类对象。
-
public Type(String value)/public Type(char value)
包装类有一个重载构造函数。Character类的重载构造函数为public Type(char value),其它类的重载构造函数为public Type(String value)。
**注意:**Boolean类中只有当参数为true为真是,返回值为真。
-
valueOf(type value)
valueOf(type value)可以将基本数据类型转换为包装类。
-
valueOf(String value)/valueOf(char value)
重载方法valueOf(String value)/valueOf(char value),Character单独一个,其它一个。
拆箱是指将包装类对象转换为基本数据类型。
-
*Value()
将包装类转为基本数据类型
-
parse*(String value)
除Character类外,每一个包装类都有一个静态方法将字符串转为数据类型。
其它方法
toString(type value):每个包装类都有,可以将基本数据类型转为String类。
5.3 接口
5.3.1 什么是接口
面向接口编程就是将程序的业务逻辑进行分离,以接口的形式去对接不同的业务模块。
连接松散、不紧密叫做低耦合。
优点:
- 能够最大县的的解耦,降低程序的耦合性;
- 使程序易于扩展;
- 有利于程序的后期维护
5.3.2 如何使用接口
创建接口文件,用class关键字标识类,用interface来表示接口。
public interface 接口名{
public 返回值 方法名(参数列表)
}
接口定义成员变量的条件:
- 不能定义private和protected修饰的成员变量;
- 接口中的成员变量在定义时必须被初始化;
- 接口的成员变量都是静态常量,即可以直接通过接口访问,同事值不能被修改。
package com.company.reinterface;
public interface MyInterface {
public int ID = 0;
String NAME= "";
public void test();
}
实现类是指将接口实例化。
public class 实现类名 implements 接口名{
public 返回值 方法名(参数列表){
}
}
在实现类内部需要对接口的所有抽象方法进行实现,同时要求访问权限修饰符、返回值类型、方法名和参数列表完全一致。
一个实现类可以有多个接口。
5.3.3 面向接口编程的实际应用
例:见响应编程文件
5.4 异常
5.4.1 什么是异常
Java的错误大致分为:一是编译错误,二是运行时错误。
Java中的专门描述各种不同的运行时错误的类叫做异常类。包括Error和Exception。Error指系统错误,有Java虚拟机生成,我们编写的程序无法处理。Exception指程序运行期间出现的错误,我们编写的程序可以对其进行处理。
5.4.2 异常的使用
try{
//可能抛出异常
}eatch(异常对象){
//处理异常
}
或
try{
//可能抛出异常
}eatch(异常对象){
//处理异常
}finally{
//必须执行的代码}
一般会在finally中进行释放资源的操做。
5.4.3 异常类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BJm2QJSo-1615876727842)(E:\自学\java 编程\网课(海同网校)\网课\作业\20201-01-30\QQ截图20210131171334.png)]
Throwable有两个直接子类:Error和Exception,这两个类我们在上一节也提到过。Error表示系统错误,程序无法解决;Exception指程序运行时出现的错误,程序可以处理。Throwable、Error和Exception都存放在java.lang包中。
Error常见的子类有VirtualMachineError、AWTError、IOError。VirtualMachineError的常见的子类有StackOverflowError和OutOfMemoryError,用来描述内存溢出等系统问题。VirtualMachineError、StackOverflowError和OutOfMemoryError都存放在java.lang包中,AWTError存放在java.awt包中,IOError存放在java.io包中。
Exception常见的子类主要有IOException和RuntimeException,IOException存放在java.io包中,RuntimeException存放在java.lang包中。Exception类要重点关注,因为这部分异常是需要我们在编写代码的过程中手动进行处理的。
IOException的常用子类有FileLockInterruptionException、FileNotFoundException和FilerException,这些异常通常都是处理通过IO流进行文件传输时发生的错误,在后面IO流的章节我们会详细讲解。FileLockInterruptionException存放在java.nio.channels包中,FileNotFoundException存放在java.io包中,FilerException存放在javax.annotation.processing包中。以下这些类全部存放在java.lang包中*
RuntimeException的常用子类如下。
ArithmeticException:表示数学运算异常。
ClassNotFoundException:表示类未定义异常。
IllegalArgumentException:表示参数格式错误异常。
ArrayIndexOutOfBoundsException:表示数组下标越界异常。
NullPointerException:表示空指针异常。
NoSuchMethodError:表示方法未定义异常。
NumberFormatException:表示将其他数据类型转为数值类型时的不匹配异常。
5.4.4 throw和throws
使用throw是开发者主动抛出异常,作用于逻辑代码;
使用throws是开发者主动抛出异常,作用于方法。
不知道是啥异常就扔给Exception。
5.4.5 自定义异常类
看代码
5.5 综合练习
多练习,多熟悉。