java类的定义位置

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、由于没有名字,只能使用一次。

 

 

 

 




 

posted @ 2020-12-06 23:45  一文搞懂  阅读(964)  评论(0编辑  收藏  举报