java的类可以定义在任何位置:

一般的类是一个文件里面写一个类,且类名和文件名相同,但是定义类的位置可以是任意的如图:

上图示例:

public class A{

class B{ }

static class C{ }

void doSomeThing(){

class D{ }

}

}

class E{ }

interface F{ }

实例展示:

public class A{

class B{

void im(){

System.out.println("I am B");

}

}

static class C{

void im(){

System.out.println("I am C");

}

}

void doSomeThing(){

System.out.println("I am A doSomeThing");

class D{

void im(){

System.out.println("I am D");

}

}

D d=new D();

d.im();

}

public static void main(String[] args) {

A a=new A();

a.doSomeThing();

B b=a.new B();

b.im();

C c=new A.C();

c.im();

E e=new E();

e.im();

F f=new F(){

public void im(){

System.out.println("I am F");

}

};

f.im();

}

}

class E{

void im(){

System.out.println("I am E");

}

}

interface F{

void im();

}

通过上面的示例就可以看出,Java的类可以放在任何位置。

1、放在同级的类中的是其他类,不能被该文件之外的其他类访问。

2、放在类中的属于内部类。

3、放在类中且被static关键词修饰的属于静态内部类。

4、放在类中的方法里面的类属于局部内部类。

特别说明: 类F(匿名内部类)F类是一个接口,拥有一个 im() 方法,但是没有实现类,一般来说我们要先为她创建实现类实现里面的方法,才能调用,但是也可以在创建它的实例的时候再去实现它,这样的话实现类就不见了(也就是匿名了),所有称这样的类叫做匿名内部类。

匿名内部类的三要素:

1、匿名的类必须包含抽象方法(接口/抽象类)。

2、在实例化类的同时去实现该抽象方法。

3、由于没有名字,只能使用一次。