内部类
2020-11-03 22:03
495 查看
what:
在一个类中定义一个类。举例:在一个类A的内部定义一个类B,类B就被称为内部类。
how:
格式: class 外部类名{ 修饰符 class 内部类名{ } }
why:
1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。 2. 对于同一个包中的其他类来说,内部类能够隐藏起来。 3.匿名内部类可以很方便的定义回调。 4.使用内部类可以非常方便的编写事件驱动程序
内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有 外部类要访问内部类的成员,必须创建对象
成员内内部类
成员内部类:定义在类中方法外的类。 格式: public Class OutClassName{ Class InnerClassName{ //,,, } //,,, } 如:汽车事务和引擎事物 引擎在汽车事物的内部 public class Car{//car就是内部类 class Engin{//engin就是内部类 //,,, } //成员方法 move public void move(){ System.out.printin("汽车在行走!"); } }
创建内部类对象的格式:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
示例代码:
/* * *定义一个外部类身体 body */ public class Body { //定义身体是否还在或者 私有的 private boolean islive = true;//ture代表活着 //定义一个内部类 Heart public class Heart { //定义一个心脏跳动功能 public void beating() { if (islive) { System.out.println("心脏在跳动"); } else { System.out.println("心脏不跳动了"); } } } //提供get set 方法 public boolean isIslive() { return islive; } public void setIslive(boolean islive) { this.islive = islive; } } //测试 public static void main(String[] args) { //创建外部类 不能直接创建外部类 Body body = new Body(); //创建内部类对象 // 格式:外部类名.内部类名 对象名 = new 外部类型().new 内部类型(); Body.Heart heart = body.new Heart(); //调用内部类方法 jump() 心脏跳动 heart.beating(); //调用外部类方法 body.setIslive(false);//isLive=false; //调用内部类方法 heart.beating();//此时isLive }
运行结果:
心脏在跳动 心脏不跳动了
备注:内部类仍然是一个独立的类,在编译之后内部类会编译成独立的.class文件 但是.class文件名称时:外部类名$内部类名 如: Body$Heart.csass
匿名内部类
匿名内部类:是内部类的简化写法,它的本质是一个 《具体实现的》《父类或者父接口》《匿名》子类的对象。 在开发中,最常用的内部类就是匿名内部类。 示例: 以接口举例:当你使用一个接口的时候,你需要做如下操作: ·1定义子类。 ·2重写接口中的方法。 ·3创建子类对象。 ·4调用重写后的方法。 我们的目的就是想调用接口中的某个方法,以上四部可以简化成一布操作 前提: 匿名内部类必须时继承一个父类或者实现一个父接口。 格式: 《类名不需要》 new 父类名或者父接口(){ //伴随着方法的重写 @overrode public void method(){ //方法内容 } }.method(); 匿名内部类的本质 本质:是一个继承了该类或者实现了该接口的子类匿名对象©著作权归作者所有:来自51CTO博客作者我是lsp的原创作品,如需转载,请注明出处,否则将追究法律责任
相关文章推荐
- 内部类
- new 接口{内部实现方法} 转为 匿名内部类
- 内部类详解
- 为什么匿名内部类参数必须为final类型
- java中的内部类(J2SE入门9)
- java:从内部类中访问本地变量msg,需要被声明为最终类型
- 内部类代码实例
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
- 匿名内部类,成员内部类 操作 final变量
- 16.内部类
- 内部类调用
- Java学习笔记第十天:3_内部类
- 匿名内部类
- JAVA内部类使用,什么时候该使用内部类及使用内部类的好处
- 内部类和外部类的简单理解
- 【内部类】局部内部类及应用
- JAVA匿名内部类实现工厂化生产
- 内部类的几种样式
- 关于JAVA中的内部类
- 内部类