内部类教学目标:
能够说出内部类的概念一、内部类
概述:什么是内部类的定义将一个类A定义在另一个类B里面,里面的那个类A就被称为内部类,B则称为外部类
成员内部类:是定义在类中方法之外的类
定义格式如下所示:
打开百度App,看更多图片
在描述事物的时候,若一个事物内部还包含其他事物,就可以使用内部类这种结构。比如,汽车类car中是包含发动机类的Engine,在这个时候,Engine就可以使用内部类来描述,定义在成员的位置。
代码举例:
访问特点
内部类可以直接访问外部类的成员,包括私有成员
外部类要访问内部类的成员,必须要建立内部类的对象
创建内部类对象格式:
访问演示,代码如下:
定义测试类:
内部类仍然是一个独立的类,在编译之后的内部类会被编译成独立的.class文件,但是前面是被加上外部类的类名和$符号;比如:Person$Heart.class
2.匿名内部类【重点】
匿名内部类:是内部类的简化写法,它的本质是一个带具体实现的,父类或者父接口的,匿名的,子类对象。在开发的过程中,最常用到的就是匿名内部类了。我们来用一个接口举例,当我们在使用一个接口的时候,要做的似乎是下面这几步:
定义子类重写接口中的方法创建 子类对象调用重写后的方法我们在这边的目的是,最终只是为了调用方法,那么能不能简化一下?把刚刚我们说的步骤合为一步呢?其实匿名内部类就是做这样的快捷方式;
前提:匿名内部类必须是继承一个父类或者实现一个父接口。
格式如下所示:
使用方式:
以接口为例,匿名内部类的使用,代码如下:
定义接口:
创建匿名内部类 并且调用的格式如下:
通常在方法的形式参数接口或者是抽象类的时候也可以将匿名的内部类作为参数传递,代码如下所示:
上面的两个步骤是可以化简为一个步骤的: