内部类
(1)定义:将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类为内部类;
(2)用途:若一个事物内部还包含其他可能包含的事物
例:比如汽车里面还包含发动机
//外部类
class Car{
//内部类
class Engine{
}
}
(3)内部类分类
A. 成员内部类
1. 定义:在外部类中的成员位置;
2. 调用规则:内部类,可以使用外部类成员,包括私有外部类要使用内部类成员,必须建立内部类对象;
3. 格式:
//外部类
class Car{
//内部类
class Engine{
}
}
4. 访问方式
外部类名.内部类名 变量名 = new 外部类名(). new 内部类名();
例:
//定义外部类
public class Outer {
int i = 1;
//外部类成员位置,定义内部类
class Inner{
int i = 2;
public void jump(){
int i = 3;
//调用局部变量
System.out.println(i);
//调用本类成员变量
System.out.println(this.i);
//调用外部类成员变量
System.out.println(Outer.this.i);
System.out.println("打印内部类方法");
}
}
}
//定义测试类
public class Test {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
oi.jump();
}
}
B. 局部内部类
1. 定义:定义在外部类方法中的局部位置·。与访问方法中的局部变量相似,可通过调用方法进行访问。
格式:
class 外部类{修饰符 返回值类型 方法名(参数){
class 内部类{
//其他代码
}
}
}访问方式:在外部类方法中,创建内部类对象,进行访问。
例:
package NeiBuLei;
/*
* 局部内部类
* 将一个类,定义在方法中
*/
//定义一个外部类
public class Outer1 {
//外部类方法
public void out(){
//定义局部内部类
class Inner1{
public void inner(){
System.out.println(“局部内部类方法”);
}
}
//利用匿名对象调用内部类里面的方法inner
new Inner1().inner();
}
}
//定义测试类
public class Test1 {
public static void main(String[] args) {
//创建外部类对象并调用out方法
new Outer1().out();
}
}