《JAVA语言程序设计》课程教学课件(PPT讲稿)J08_内部类与异常类

第8章内部类与异常类 王绍卿
1 第8章内部类与异常类 王绍卿

导读 主要内容 内部类 匿名类 ● 异常类 ●】 断言 难点 异常类 2025/4/2
2025/4/2 2 导读

§8.1 内部类 ■Java支持在一个类中声明另一个类,这样的类称作内部类, 而包含内部类的类成为内部类的外嵌类。 ■内部类(成员类):定义在类中的类,可以看成是外部类的 一个成员。主要作用是将逻辑上相关的类放到一起。 例8-1 RedCowForm.java,Example8 1.java 某种类型的农场饲养了一种特殊种类的牛,但不希望其它 农场饲养这种特殊种类的牛,那么这种类型的农场就可以将 创建这种特殊种牛的类作为自己的内部类。例8-1中有一个 RedCowForm(红牛农场)类,该类中有一个名字为RedCow (红牛)的内部类。程序运行效果如图8.1所示
3 §8.1 内部类 ◼Java支持在一个类中声明另一个类,这样的类称作内部类, 而包含内部类的类成为内部类的外嵌类。 ◼内部类(成员类):定义在类中的类,可以看成是外部类的 一个成员。主要作用是将逻辑上相关的类放到一起。 例8-1 RedCowForm.java, Example8_1.java 某种类型的农场饲养了一种特殊种类的牛,但不希望其它 农场饲养这种特殊种类的牛,那么这种类型的农场就可以将 创建这种特殊种牛的类作为自己的内部类。例8-1中有一个 RedCowForm(红牛农场)类,该类中有一个名字为RedCow (红牛)的内部类。程序运行效果如图8.1所示

public class RedCowForm public class Example8_1{ String formName: public static void main(String args[]){ RedCow cow,∥内部类声明对象 RedCowForm form=new RedCowFormO RedCowForm("红牛农场"); RedCowForm(Strings) form.showCowMess(); 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);
public class RedCowForm { 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); } } } public class Example8_1 { public static void main(String args[]) { RedCowForm form = new RedCowForm("红牛农场"); form.showCowMess(); } }

例8-1 RedCowForm.java, Example8 1.java 某种类型的农场饲养了一种特殊种类的牛,但不希望其它 农场饲养这种特殊种类的牛,那么这种类型的农场就可以将 创建这种特殊种牛的类作为自己的内部类。例8-1中有一个 RedCowForm(红牛农场)类,该类中有一个名字为RedCow (红牛)的内部类。程序运行效果如图8.1所示。 C:\ch8>java Example8_1 偶是红牛,身高:150cm体重:112kg,生活在红牛农场 图8.1使用内部类
5 例8-1 RedCowForm.java, Example8_1.java 某种类型的农场饲养了一种特殊种类的牛,但不希望其它 农场饲养这种特殊种类的牛,那么这种类型的农场就可以将 创建这种特殊种牛的类作为自己的内部类。例8-1中有一个 RedCowForm(红牛农场)类,该类中有一个名字为RedCow (红牛)的内部类。程序运行效果如图8.1所示

§8.1内部类 内部类仅供它的外嵌类使用。 ■内部类的类体不可以声明类变量和类方法 ■内部类可以使用外嵌类的成员变量和成员方法 ■内部类对应的字节码文件格式是“外嵌类$内 部类名” ●如:RedCowForm$RedCow.class ■外部类访问内部类时,必须在内部类名前冠以 其所属外部类的名字才能使用;在用new创建 内部类时,也需在new前冠以对象变量
§8.1 内部类 ◼内部类仅供它的外嵌类使用。 ◼内部类的类体不可以声明类变量和类方法 ◼内部类可以使用外嵌类的成员变量和成员方法 ◼内部类对应的字节码文件格式是“外嵌类$内 部类名” ⚫如:RedCowForm$RedCow.class ◼外部类访问内部类时,必须在内部类名前冠以 其所属外部类的名字才能使用;在用new创建 内部类时,也需在new前冠以对象变量

在外部类外部访问非静态内部类: class Waif class Neif int i=3; public class test{ public static void main(String[]args){ Wai.Nei wnl new Wai().new Nei(); System.out.println("内部类中的变量i:"+wnl.i):
在外部类外部访问非静态内部类: class Wai{ class Nei{ int i=3; } } public class test{ public static void main(String[] args){ Wai.Nei wn1 = new Wai().new Nei(); System.out.println("内部类中的变量i:"+wn1.i); } }

在外部类外部访问静态内部类 class Waif static class Neif int i=3; public class test{ public static void main(String[]args){ Wai.Nei wnl new Wai.Nei(); System.out.println("内部类中的变量i:"+wnl.i);
在外部类外部访问静态内部类: class Wai{ static class Nei{ int i=3; } } public class test{ public static void main(String[] args){ Wai.Nei wn1 = new Wai.Nei(); System.out.println("内部类中的变量i:"+wn1.i); } }

P164实验1
P164 实验1

§8.2匿名类 §8.2.1和子类有关的匿名类 假如没有显式地声明一个子类,而又想用子类创建 一个对象,如何实现? Java允许我们直接使用一个类的子类的类体创建 一个子类对象。 创建子类对象时,除了使用父类的构造方法外还有 类体,此类体被认为是一个子类去掉类声明后的类体, 称作匿名类。 0
10 §8.2 匿名类 §8.2.1 和子类有关的匿名类 假如没有显式地声明一个子类,而又想用子类创建 一个对象,如何实现? Java允许我们直接使用一个类的子类的类体创建 一个子类对象。 创建子类对象时,除了使用父类的构造方法外还有 类体,此类体被认为是一个子类去掉类声明后的类体, 称作匿名类
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《JAVA语言程序设计》课程教学课件(PPT讲稿)J09_常用实用类.ppt
- 《JAVA语言程序设计》课程教学课件(PPT讲稿)J10_输入、输出流.ppt
- 《JAVA语言程序设计》课程教学课件(PPT讲稿)J11_JDBC操作Derby数据库.ppt
- 《编译原理》课程教学课件(PPT讲稿)cha2 文法和语言(文法实例小C语言).ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha1 引论 修订.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha2_1 文法和语言——讲授 修订.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha2_2 文法和语言_短语直接短语句柄——讲授.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha3 词法分析 修订 讲授.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha3 词法分析 阅读.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha4 自顶向下语法分析方法.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha5 自底而上语法分析.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha6 LR分析 修订教材页码.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha7-8 语法制导翻译和中间代码生成 修订增加继承属性简介.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha10_1 代码优化 讲授.ppt
- 《编译原理》课程教学课件(PPT讲稿,2018)cha10_2 代码生成 讲授.ppt
- 《编译原理》课程教学资源(习题答案)编译原理习题答案,第二版,清华.pdf
- 《编译原理》课程教学课件(PPT讲稿)第一章引言.ppt
- 《编译原理》课程教学课件(PPT讲稿)运行时存储空间组织.ppt
- 《编译原理》课程教学课件(PPT讲稿)第三章 词法分析.ppt
- 《编译原理》课程教学课件(PPT讲稿)第二章 文法与语言.ppt
- 《JAVA语言程序设计》课程教学课件(PPT讲稿)J07_数组与枚举.ppt
- 《JAVA语言程序设计》课程教学课件(PPT讲稿)J06_接口与多态.ppt
- 《JAVA语言程序设计》课程教学课件(PPT讲稿)J05_子类与继承.ppt
- 《JAVA语言程序设计》课程教学课件(PPT讲稿)J04_类与对象.ppt
- 《JAVA语言程序设计》课程教学课件(PPT讲稿)J03_运算符、表达式和语句.ppt
- 《JAVA语言程序设计》课程教学课件(PPT讲稿)J03_数据编码.ppt
- 《JAVA语言程序设计》课程教学课件(PPT讲稿)J02_初识对象和简单数据类型.ppt
- 山东理工大学:《数据结构》课程教学资源(数据结构自编习题集).doc
- 《数据结构》课程教学资源(参考资料)数据结构实验指导书.doc
- 《数据结构》课程教学资源(参考资料)线索二叉树提高.ppt
- 《数据结构》课程教学资源(参考资料)数据结构学习方法.doc
- 清华大学出版社:《数据结构基础》课程教材书籍PDF电子书(C语言版,第2版,Ellis Horowitz Sartaj Sahni 著,Susan Anderson-Freed 朱仲涛 译).pdf
- 清华大学出版社:《计算机绘图AutoCAD》课程教学资源(PPT课件)第8章 AutoCAD绘制机械装配图.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学资源(PPT课件)第7章 AutoCAD绘制机械零件图.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学资源(PPT课件)第6章 AutoCAD绘制标准件与常用件.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学资源(PPT课件)第5章 AutoCAD绘制机械图样.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学资源(PPT课件)第4章 AutoCAD尺寸标注.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学资源(PPT课件)第3章 AutoCAD绘制形体视图.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学资源(PPT课件)第2章 AutoCAD绘图平面图形.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学资源(PPT课件)第1章 AutoCAD设计基础.ppt
