当前位置: 首页 > 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+"吨货物");}}
}

相关文章:

  • C++STL---string知识汇总
  • Elasticsearch的复制功能
  • C#解析xml文件
  • K8s的kubectl的基本操作
  • C语言中的操作符
  • 二叉树——经典练习题
  • 【Linux-中断】
  • K8S认证|CKA题库+答案| 13. sidecar 代理容器日志
  • Qt中的网络编程(Tcp和Udp)详解 及 实现
  • Gitee的原理及应用详解(二)
  • vue data中的return
  • 使用pyqt绘制一个爱心!
  • C++ 实现深度优先搜索(DFS)的简单示例代码
  • 【OpenCV 基础知识 18】对两图像按位与操作
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • SegmentFault for Android 3.0 发布
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【刷算法】从上往下打印二叉树
  • Android交互
  • avalon2.2的VM生成过程
  • CSS实用技巧
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Python socket服务器端、客户端传送信息
  • session共享问题解决方案
  • spring boot下thymeleaf全局静态变量配置
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 软件开发学习的5大技巧,你知道吗?
  • 我建了一个叫Hello World的项目
  • 学习JavaScript数据结构与算法 — 树
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​渐进式Web应用PWA的未来
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #android不同版本废弃api,新api。
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (14)Hive调优——合并小文件
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (笔记自用)LeetCode:快乐数
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (十五)、把自己的镜像推送到 DockerHub
  • (推荐)叮当——中文语音对话机器人
  • (原)Matlab的svmtrain和svmclassify
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)socket Aio demo
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .net CHARTING图表控件下载地址
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 表达式计算:Expression Evaluator
  • .Net 代码性能 - (1)