其實這個非常確定,在一班類的定義中是不能使用static修飾符的,但是之所以提出來,是因為真有一種情況可以將類定義為static類型的,那就是內部類。
如下的定義中,是一個內部類的實現:
package net.moon.insignificant.staticclass;</p><p>public class StaticClassDemo {</p><p>public static void main(String[] args) {<br />StaticClassDemo.InnerClass ic = new StaticClassDemo.InnerClass();<br />ic.showMessage("Hello, world");<br />}</p><p>static class InnerClass{<br />public void showMessage(String msg){<br />System.out.println(msg);<br />}<br />}<br />}<br />
這裡的外部類StaticClassDemo是一個普通的類,我們可以進一步修改,將StaticClassDemo改為一個抽象類別,那麼,我們就可以在抽象類別中附帶一個預設的實現,代碼如下:
package net.moon.insignificant.staticclass;</p><p>public abstract class StaticClassDemo {</p><p>public static void main(String[] args) {<br />StaticClassDemo.InnerClass ic = new StaticClassDemo.InnerClass();<br />ic.showMessage("Hello, world");<br />}</p><p>public abstract void showMessage(String msg);</p><p>static class InnerClass extends StaticClassDemo{<br />public void showMessage(String msg){<br />System.out.println(msg);<br />}<br />}<br />}<br />
當然,更進一步,我們也可以用這種方式給介面提供預設的實現,代碼如下:
package net.moon.insignificant.staticclass;</p><p>public interface StaticClassDemo {</p><p>public void showMessage(String msg);</p><p>static class InnerClass implements StaticClassDemo{<br />public void showMessage(String msg){<br />System.out.println(msg);<br />}</p><p>public static void main(String args[]){<br />StaticClassDemo.InnerClass ic = new StaticClassDemo.InnerClass();<br />ic.showMessage("Hello, world");<br />}<br />}<br />}<br />
下一篇:Java牛角尖【003】:類初始化時的執行順序