1.什么是内部类
将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类。其他类也称为外部类。
简单理解就是将一个类定义在另一个类里面,这样称为内部类(类中类)
2. 内部类的分类:
内部类分为:成员内部类、局部内部类、静态内部类、匿名内部类
成员内部类:在成员位置。
局部内部类:在局部位置。
静态内部类:用静态修饰。
匿名内部类:...
3.什么时候使用内部类
在描述事物时,若一个事物内部还包含其他可能包含的事物,比如在描述汽车时,汽车中还包含这发动机,这时发动机就可以使用内部类来描述。
public class Demo {
//这里是成员位置
public static void main(String[] args) {
//这里是局部位置
}
//这里是成员位置
}
成员位置:在类里面,方法外面
成员内部类:在类里面,方法外面定义的类
局部位置:在类里面,方法里面
局部内部类:在类里面,方法里面定义的类
//举例说明什么是内部类
/**
* 什么是内部类:
* 写在类中的类(比如Body是外部类,心脏是内部类)
* class Body{
* class 心脏{
* }
* }
*
* class 汽车{
* class 发动机{
* }
* class 空调{
* class 压缩机{
* }
* }
* }
*/
成员内部类
外部类名.内部类名 变量名 = new 外部类().new 内部类();
成员内部类访问外部类成员:外部类.this.成员方法
package DEMO2.DAY9_demo13_成员内部类;
public class Demo {
public static void main(String[] args) {
//创建内部类的对象
Outer.Inner inner = new Outer().new Inner();
inner.show();
Outer outer = new Outer();
outer.getInner();
}
}
class Outer{
int num1 = 1;
//内部类
//private 表示该内部类是私有的
class Inner{
int num2 = 2;
public void show(){
System.out.println("我是内部类的方法");
System.out.println(Outer.this.num1);//成员内部类访问外部类成员
Outer.this.m1();
System.out.println(this.num2);
}
}
//提供一个访问内部类的方式
public void getInner(){
Inner inner = new Inner();
inner.show();
}
public void m1(){
System.out.println("外部类的方法");
}
}