201711671109《Java程序设计》第八周总结(第7章)

教材内容学习

 

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/4501/88/56

内部类与匿名类

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值