当前位置: 首页 > news >正文

【java程序设计期末复习】chapter7 内部类和异常类

内部类和异常类

内部类

ava支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类

注意

(1)内部类的类体中不可以声明类变量和类方法。
(2)外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。

内部类的使用规则:

声明内部类如同在类中声明方法或变量一样,一个类把内部类看作是自己的成员。
外嵌类的类体中可以用内部类声明的对象,作为外嵌类的成员。
外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。
内部类的类体中不可以声明类变量和方法。
外嵌类和内部类在编译时,生成两个.class文件。
public class Example7_1 {public static void main(String args[]) {RedCowForm form = new RedCowForm("红牛农场");form.showCowMess();form.cow.speak();//RedCowForm.RedCow redCow = new RedCowForm.RedCow(180,119,6000);//redCow.speak();}   
}
class RedCowForm {static String formName;RedCow cow;  //内部类声明对象RedCowForm() {}RedCowForm(String s) //构造方法{cow = new RedCow(150,112,5000);formName = s;}public void showCowMess() {cow.speak();}class RedCow {  //内部类的声明String cowName = "红牛";int height,weight,price;RedCow(int h,int w,int p){height = h;weight = w;price = p;}void speak() {System.out.println("偶是"+cowName+",身高:"+height+"cm 体重:"+weight+"kg,生活在"+formName);}}    //内部类结束
} 

匿名类

Java允许我们直接使用一个类的子类的类体创建一个子类对象。

1.和子类有关的匿名类
创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。
假设Bank是类,那么下列代码就是用Bank的一个子类(匿名类)创建对象:

new Bank () 
{          匿名类的类体
};

2.和接口有关的匿名类
假设Computable是一个接口,那么,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,称作匿名类。
下列代码就是用实现了Computable接口的类(匿名类)创建对象:

new Computable() 
{实现接口的匿名类的类体
} ;

异常类

所谓异常就是程序运行时可能出现一些错误,比如试图打开一个根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误作出处理。程序运行出现异常时,Java运行环境就用异常类Exception的相应子类创建一个异常对象,并等待处理。

try…catch语句

Java使用trycatch语句来处理异常,将可能出现的异常操作放在trycatch语句的try部分,将发生异常后的处理放在catch部分。
try~catch语句的格式如下:

try 
{包含可能发生异常的语句
}
catch(ExceptionSubClass1  e)
{}
catch(ExceptionSubClass2  e)
{}

例子:

class DangerException extends Exception {final String message = "超重";public String warnMess() {return message;}
}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(); }}
}public class Example7_8 {public static void main(String args[]) {CargoBoat ship = new CargoBoat();ship.setMaxContent(1000);int m = 0;try{ m =600; 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+"吨的集装箱"); try {ship.loading(-m); //卸载货物}  catch(DangerException exp) { System.exit(0);  //程序退出,不再给机会}  }finally {System.out.printf("货船将正点启航\n");System.out.println("目前装载了"+ship.realContent+"吨货物");}}
}
http://www.lryc.cn/news/354053.html

相关文章:

  • Windows下安装配置深度学习环境
  • 如何使用ssh将vscode 连接到服务器上,手把手指导
  • Tomcat调优参数
  • 云计算和大数据处理
  • VAE-变分自编码器(Variational Autoencoder,VAE)
  • Android Room 使用模版
  • Linux/Ubuntu 中安装 ZeroTier,实现内网穿透,2分钟搞定
  • java技术:oauth2协议
  • Java 18 新特性详解
  • 【css3】06-css3新特性之网页布局篇
  • 【开源】大学生竞赛管理系统 JAVA+Vue+SpringBoot+MySQL
  • 跨境选品师不是神话:普通人也能轻松掌握,开启全球贸易新篇章!
  • 前缀和,差分算法理解
  • ubuntu/部分docker容器无法访问https站点
  • 【MySQL】库的基础操作
  • 嵌入式0基础开始学习 ⅠC语言(2)运算符与表达式
  • 汇编语言(一)
  • 2010-2022年各省新质生产力数据(含原始数据+测算代码+计算结果)
  • 需求分析部分图形工具
  • ML307R OpenCPU GPIO使用
  • python基于深度学习的聊天机器人设计
  • Golang设计模式(四):观察者模式
  • huggingface 笔记:查看GPU占用情况
  • JavaSE 学习记录
  • HTML与CSS的学习
  • 【单片机】STM32F070F6P6 开发指南(一)STM32建立HAL工程
  • 源码编译安装Rsync数据同步
  • SQL Server2019安装步骤教程(图文)_最新教程
  • 【SpringBoot】SpringBoot中防止接口重复提交(单机环境和分布式环境)
  • 零基础学Java(全170集)