内部类就是在一个类的内部定义一个类,比如:A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类啦。
【示例 1】成员内部类
class Outer {
private int num = 10;
public void out() {
System.out.println("这是外部的方法");
}
class Inner {
public void in() {
System.out.println("这是内部的方法");
}
public void getNum() {
System.out.println(num);
}
}
}
public class Test2 {
public static void main(String[] args) {
Outer outer = new Outer();
//通过外部类来实例化内部类
Outer.Inner inner = outer.new Inner();
inner.in();
inner.getNum();
}
}
执行结果如下:
【示例 2】局部内部类
class Outer1 {
//局部内部类
public void method() {
class Inner {
public void in() {
System.out.println("我是局部内部类");
}
}
new Inner().in();
}
}
public class Test3 {
public static void main(String[] args) {
Outer1 outer1 = new Outer1();
outer1.method();
}
}
执行结果如下:
【示例 3】静态内部类
class Outer2{
private int num = 100;
public void out(){
System.out.println("我是外部类");
}
//静态内部类
static class Inner2{
public void in(){
System.out.println("我是内部类");
}
}
}
public class Test4 {
public static void main(String[] args) {
Outer2 outer2 = new Outer2();
outer2.out();
Outer2.Inner2 inner2 = new Outer2.Inner2();
inner2.in();
}
}
执行结果如下:
【示例 4】匿名内部类
class Xxx {
public void shout() {
System.out.println("嗷~");
}
}
interface UserService {
void hello();
}
public class Test5 {
public static void main(String[] args) {
//匿名对象.方法
new Xxx().shout();
// 适合那种只需要使用一次的类。比如:键盘监听操作等等。
new UserService() {
@Override
public void hello() {
System.out.println("hello");
}
}.hello();
}
}
执行结果如下: