




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java 基础教程(第 3版) 第 7章内部类与异常类 主要内容2 页7.1 内部类 Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。 内部类和外嵌类之间的重要关系如下。内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。(包括私有的)内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象。下面的 例子 1(Example7_1.java)中有一个 RedCowForm类,该类中有一个名字为 RedCow( 红牛)的内部类。 程序运行效果如图 7.1。 3 页public 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;4 页void speak() System.out.println(“偶是 “+cowName+“,身高 :“+height+“cm 体重 :“+weight+“kg,生活在 “+formName); /内部类结束 /外嵌类结束public class Example7_1 public static void main(String args) RedCowForm form = new RedCowForm(“红牛农场 “);form.showCowMess();form.cow.speak(); 5 页 内部类产生的字节码文件的名称为 外嵌类名 $内部类名 .class,在该名称中可以区分该内部类到底是哪一个类的内部类。 静态内部类 :内部类使用 static修饰成静态的形式。使用 static修饰类,这在正常类中是不可能的。定义静态内部类的语法如下所示。class Waistatic class Nei/内部类成员/外部类成员6 页 因为静态内部类是外部类的静态成员,静态成员是不需要外部类对象而存在的,所以在外部类外,对静态内部类进行访问时是不需要创建外部类对象的。 其他类可以通过 外部类 .内部类的方式 创建 内部类的对象。RedCowForm. RedCow redcow=new RedCowForm. RedCow (180,119,6000); 静态内部类可以直接访问外部类的静态成员 ,但不能直接访问外部类的实例成员。7 页class Outer private String f = “I am Outer“;private static String l= “hehe“;public static class InnerTool private String f = “I am Inner”; /可以有非静态成员public void print() System.out.println(f);System.out.println(this.f);System.out.println(new Outer().f); / 访问实例成员System.out.println(l); / 访问静态成员public class Demo public static void main(String args) Outer.InnerTool ob = new Outer.InnerTool();ob.print();I am InnerI am InnerI am Outerhehe8 页7.2 匿名类 7.2.1 和子类有关的匿名类 匿名类是一个 子类 ,用于临时创建一个内部类对象,不必单独去定义该子类。创建子类对象时,除了要使用父类的构造方法,还包括类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。 类体内可以对父类、抽象类以及接口的方法进行 重写 ,也可以定义自己的方法。由于无名可用,所以 不可能用匿名类声明对象 ,但却可以直接用匿名类创建一个对象。创建形式:new 父类名() 匿名类类体;9 页 匿名类在创建对象时,要直接使用父类的构造方法完成三件事:1、创建一个 Speak的子类,该子类为匿名类2、改写 Speak中的方法 speakHello()3、返回该子类的引用,赋给 Speak speak10 页 由于匿名类是一个子类,但没有类名,所以在用匿名类创建对象时, 要直接使用父类的构造方法 。 尽管匿名类创建的对象没有经过类声明步骤,但匿名对象的引用可以传递给一个匹配的参数, 匿名类的常用的方式是向方法的参数传值 。 匿名类 可以 继承父类的方法 也可以 重写父类的方法。 使用匿名类时,必然是在某个类中直接用匿名类创建对象, 因此匿名类一定是内部类 ,匿名类可以访问外嵌类中的成员变量和方法, 匿名类的类体中不可以声明 static成员变量和 static方法11 页InputAlphabet.javaabstract class InputAlphabet public abstract void input();InputEnglish.javapublic class InputEnglish extends InputAlphabet /输出英文字母的子类public void input() for(char c=a;c=0|in+outmaxContent) throw new DangerException(); System.out.println(“目前装载了 “+realContent+“吨货物 “);29 页Example7_6.javapublic class Example7_6 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 狼嚎叫课件教学课件
- 安全教育文案培训总结课件
- 电气工程节能方案(3篇)
- 安全教育培训需求报告课件
- 农业产业链金融2025特色农产品电商平台创新研究评估报告
- 粮食贸易面试题库及答案
- 联合利华ai面试题库及答案
- 客户导向面试题库及答案
- 考研机构面试题库及答案
- 农业产业园项目2025年农业生态保护与效益评估报告
- 工程造价信息化管理中的问题与发展趋势
- 室性心动过速护理查房
- 2025届上海市(春秋考)高考英语考纲词汇对照表清单
- 教务处精细化常规管理
- 培训课件:医患沟通技巧
- 广东省四校2024-2025学年高三上学期期末联考英语试题(无答案)
- 《解剖学》课程标准
- 2025深圳劳动合同下载
- 政治理论应知应会100题
- 2024年工业机器人系统操作员(高级工)职业技能鉴定考试题库(含答案)
- 2024年宁德监狱囚犯心理咨询服务合同
评论
0/150
提交评论