其实这个非常确定,在一班类的定义中是不能使用static修饰符的,但是之所以提出来,是因为真有一种情况可以将类定义为static类型的,那就是内部类。
如下的定义中,是一个内部类的实现:
- package net.moon.insignificant.staticclass;
- public class StaticClassDemo {
- public static void main(String[] args) {
- StaticClassDemo.InnerClass ic = new StaticClassDemo.InnerClass();
- ic.showMessage("Hello, world");
- }
- static class InnerClass{
- public void showMessage(String msg){
- System.out.println(msg);
- }
- }
- }
这里的外部类StaticClassDemo是一个普通的类,我们可以进一步修改,将StaticClassDemo改为一个抽象类,那么,我们就可以在抽象类中附带一个默认的实现,代码如下:
- package net.moon.insignificant.staticclass;
- public abstract class StaticClassDemo {
- public static void main(String[] args) {
- StaticClassDemo.InnerClass ic = new StaticClassDemo.InnerClass();
- ic.showMessage("Hello, world");
- }
- public abstract void showMessage(String msg);
- static class InnerClass extends StaticClassDemo{
- public void showMessage(String msg){
- System.out.println(msg);
- }
- }
- }
当然,更进一步,我们也可以用这种方式给接口提供默认的实现,代码如下:
- package net.moon.insignificant.staticclass;
- public interface StaticClassDemo {
- public void showMessage(String msg);
- static class InnerClass implements StaticClassDemo{
- public void showMessage(String msg){
- System.out.println(msg);
- }
- public static void main(String args[]){
- StaticClassDemo.InnerClass ic = new StaticClassDemo.InnerClass();
- ic.showMessage("Hello, world");
- }
- }
- }