Java内部类
Java内部类
概述
将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类,其他类称为外部类
class 汽车{ // 外部类 class 发动机{ //内部类 } }
分类
- 成员内部类
- 局部内部类
内部类可以直接访问外部类的所有成员
1.成员内部类
成员内部类定义在外部类的成员位置,与类中的成员变量类似,可以通过外部类对象进行访问
定义格式:
class 外部类{
修饰符 class 内部类{
}
}
访问方式:
外部类名.内部类名 变量名=new 外部类名().new 内部类名();
package com.test.test; public class Body { private Boolean life=true; public class Heart{ public void jump(){ System.out.println("跳跳跳"); } } public static void main(String[] args) { Body.Heart bh=new Body().new Heart(); bh.jump(); } }
2.局部内部类
定义在外部类方法中的局部位置,访问方法与方法中的局部变量类似,可以通过调用方法访问
定义格式:
class 外部类{
修饰符 返回值类型 方法名(参数){
class 内部类{
}
}
}
package com.test.test; public class Body { public void HeartJump(){ class Heart{ public void jump(){ System.out.println("跳跳"); } } new Heart().jump(); } public static void main(String[] args) { Body body=new Body(); body.HeartJump(); } }
匿名内部类
含义:
- 临时定义某一指定类型的子类
- 定义后可创建刚刚定义的这个子类的对象
格式:
new 父类或接口(){
//方法重写
}
package com.test.test; //父类 public abstract class Parent { public abstract void eat(); } public class Main { public static void main(String[] args) { //匿名内部类 Parent p=new Parent() { public void eat() { System.out.println("吃"); } }; p.eat(); } }