教材内容学习
7.1内部类
内部类与外嵌类:在一个类中定义另一个类,这样的类称为内部类,而包含内部类的类称为内部类的外嵌类
内部类和外嵌类的重要关系如下:
(1)内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法
(2)内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员
(3)内部类仅供他的外嵌类使用,其他类不可以用某个类的内部类声明对象
7.2匿名类
1、和子类有关的匿名类
匿名类:一个子类去掉类声明后的类体
匿名类的特点:
(1)匿名类可以继承父类的方法也可以重写父类的方法
(2)使用匿名类时,必然是在某个类中直接用匿名类创建对象,因此匿名类一定是内部类
(3)匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以声明static成员变量和static方法
(4)由于匿名类是一个子类,但没有类名,所以在用匿名类创建对象时,要直接使用父类的构造方法
2、和接口有关的匿名类
如果某个方法的参数是接口类型,那么可以使用接口名和类体组合创建一个匿名对象传递给方法的结束,类体必须要重写接口中的全部方法
7.3异常类
try-catch
(1)使用try-catch语句来处理异常,将可能出现的异常操作放在try-catch语句的try部分,一旦try部分抛出异常,或调用了某个可能抛出异常对象的方法,并且该方法抛出了异常对象,那么try部分将立即结束执行,转向执行相应的catch部分
(2)try语句格式:
try{
包含看你发生异常的语句
}
catch(ExceptionSubClass e) {
...
}
catch(ExceptionSubClass 额) {
...
}
7.4断言
断言语句一般用于程序不准备通过捕获异常来处理的错误
(1)断言语句的两种语法格式
assert booleanExpresssion;
assert booleanExpression:messageExpception;
(2)启动和关闭断言语句
代码编写
DangerException.java
public class DangerException extends Exception {
final String message = "超重";
public String warnMess() {
return message;
}
}
CargoBoat.java
public class CargoBoat {
int realContent; //装载的重量
int maxContent; //最大装载量
public void setMaxContent(int c) {
maxContent = c;
}
public void loading(int m) throws DangerException {
realContent += m;
if(realContent>maxContent) {
throw new DangerException();
}
System.out.println("目前装载了"+realContent+"吨货物");
}
}
Example7-7.java
public class Example7_7 {
public static void main(String args[]) {
CargoBoat ship = new CargoBoat();
ship.setMaxContent(1000);
int m =600;
try{
ship.loading(m);
m = 400;
ship.loading(m);
m = 367;
ship.loading(m);
m = 555;
ship.loading(m);
}
catch(DangerException e) {
System.out.println(e.warnMess());
System.out.println("无法再装载重量是"+m+"吨的集装箱");
}
finally {
System.out.printf("货船将正点启航");
}
}
}
教材学习中遇到的问题
无
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第二周 | 50/450 | 1/8 | 8/56 | 内部类与匿名类 |