/*注释:本程序演示各种内部类的书写方法,调用方法.*/
class Outer{
class Inter{
public void medo(){
System.out.println("内部类和内部类里面的方法都非静态.");
}
}
}
class Outer1{
static class Inter1{
public static void medo1(){
System.out.println("内部类和内部类里面的方法都是静态的.");
}
}
}
class Outer2{
static class Inter2{
public void medo2(){
System.out.println("内部类是静态的,内部类里面的方法都是非静态的.");
}
}
}
//局部位置内部类定义在方法中
class Outer3{
public void function(){
class Inter3{
public void show(){
System.out.println("局部位置内部类定义在方法中");
}
}
new Inter3().show();
}
}
//匿名内部类
interface A{
public abstract void show();
}
class Outer4{
public void function(){
//将实现类,重写方法,调用一步完成
new A(){//匿名内部类,或称为接口的实现类对象
public void show(){
System.out.println("匿名匿名内部类");
}
}.show();
}
}
//接口实现多个匿名内部类
interface B{
public abstract void show();
public abstract void show2();
}
class Outer5{
public void function(){
B b =new B(){
public void show(){
System.out.println("多个接口匿名匿名内部类");
}
public void show2(){
System.out.println("多个接口匿名匿名内部类");
}
};
b.show();
b.show();
}
}
public class InsideType {
public static void main(String[] args) {
Outer.Inter otit = new Outer().new Inter();
otit.medo();
System.out.println("----------第一种实现方法打印完成---------");
Outer1.Inter1.medo1();
System.out.println("----------第二种实现方法打印完成---------");
Outer2.Inter2 ouit2 = new Outer2.Inter2();
ouit2.medo2();
System.out.println("----------第三种实现方法打印完成---------");
new Outer3().function();
System.out.println("----------局部位置内部类定义在方法中打印完成---------");
new Outer4().function();
System.out.println("----------匿名内部类实现方法打印完成---------");
new Outer5().function();
System.out.println("----------打印完成---------");
}
} |