- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内部类
内部类的概述
将类定义在另一个类的内部则成为内部类。其实就是类定义的位置发生了变化。
在一个类中,定义在类中的叫成员变量,定义在函数中的叫成员函数,那么根据类定义的位置也可以分为成员内部类和局部内部类。
备注:内部类生产的class文件为 “外部类$内部类”,为了标明该内部类是属于具体哪个外部类的。
成员内部类的访问方式
内部类可以直接访问外部类的成员属性。(孙悟空相当于内部类飞到牛魔王的肚子里面去)。
外部类需要访问内部类的成员属性时需要创建内部类的对象。
在外部类的成员函数中创建内部类的对象,通过内部类对象对象直接访问内部类的成员。
在其他类中直接创建内部类的对象。
Outer.Inner inner = new Outer().new Inner();
外部类访问内部类的属性
编译异常分析:外部类需要访问内部类的属性时,需要创建内部类的对象访问。
有A类和B类,当A类想要直接访问B类中的成员,而B类又需要建立A类的对象来A类中的成员。这时,就将A类定义成B类的内部类。比喻:孙悟空和铁扇公主。孙悟空到了公主肚子中,就成了内部类(其实是持有外部类的对象引用)。
疑问:?什么时候使用内部类呢?
当我们分析事物时,发现事物的内部还有具体的事物,这时则应该定义内部类了。
比如人体是一个类,人体有心脏,心脏的功能在直接访问人体的其他内容。这时就将心脏定义在人体类中,作为内部类存在。
内部类的优势:成员内部类作为外部类的成员,那么可以访问外部类的任意成员。
成员内部类访问细节
私有的成员内部类不能在其他类中直接创建内部类对象来访问。
如果内部类中包含有静态成员,那么java规定内部类必须声明为静态的访问静态内部类的形式:Outer.Inner in = new Outer.Inner();
总结:成员内部类(成员属性、成员方法)特点:?
私有的成员内部类
特点:不能在其他类中直接创建内部类对象来访问
静态的成员内部类
特点:如果内部类中包含有静态成员,那么java规定内部类必须声明为静的
访问静态内部类的形式:
Outer.Inner in = new Outer.Inner();
疑问:?目前打印的num是20,如果想打印10的话,应该怎么做?
解答:这时候其实在show方法中已经存在了两个this对象,一个是外部类对象,一个是内部类对象,所以要在this前面加上类名标明对应的this。
局部内部类
局部内部类概述:包含在外部类的函数中的内部类称之为局部内部类。
访问:可以在包含局部内部类的方法中直接创建局部内部类的对象调用局部内部类的成员。
注意:局部内部类只能访问所在函数的fanal属性。
匿名内部类
匿名内部类:就是没有类名字的内部类。
匿名内部类作用:简化内部类书写。
匿名内部类的前提:必须继承一个父类或者是实现一个接口。
匿名内部类的格式:
new 父类或者接口(){ 执行代码….};
内部类的写法:
class Outer{
class Inner
{
public void show(){
System.out.println(内部类的show方法);
}
}
public void print(){
new Inner().show();
}
} 匿名内部类调用show方法:
案例:在外部类调用show1、show2方法。内部类的实现方法/
使用匿名内部类实现:?
注意细节:
1.使用匿名内部类时,如果需要调用匿名内部类的两个方法或者两个方法以上。可以使用变量指向该对象。
异常
现实生活的病
现实生活中万物在发展和变化会出现各种各样不正常的现象。
1:例如:人的成长过程中会生病。
|——病
|——不可治愈 |——可治愈
|——小病自行解决 |——去医院java异常体系图现实生活中的很多病况从面向对象的角度考虑也是一类事物,可以定义为类。
java中可以通过类对这一类不正常的现象进行描述,并封装为对象。
java的异常体系包含在java.lang这个包默认不需要导入。
java异常体系 |——Throwable (实现类描述java的错误和异常)
|——Error (错误) |——Exceprion (异常)
|——RuntimeException (运行时异常)
|——非运行时异常
错误原因:内存溢出。需要的内存已经超出了java虚拟机管理的内存范围。
错误原因:找不到类文件。
错误(Error):
它指的是一个合理的应用程序不能截获的严重的问题。大多数都是反常的情况。错误是V
文档评论(0)