`

类可以被static修饰吗?

 
阅读更多

其实这个非常确定,在一班类的定义中是不能使用static修饰符的,但是之所以提出来,是因为真有一种情况可以将类定义为static类型的,那就是内部类。

  如下的定义中,是一个内部类的实现:

 

[java] view plaincopy
  1. package net.moon.insignificant.staticclass;  
  2.   
  3. public class StaticClassDemo {  
  4.   
  5.     public static void main(String[] args) {  
  6.         StaticClassDemo.InnerClass ic = new StaticClassDemo.InnerClass();  
  7.         ic.showMessage("Hello, world");  
  8.     }  
  9.   
  10.     static class InnerClass{  
  11.         public void showMessage(String msg){  
  12.             System.out.println(msg);  
  13.         }  
  14.     }  
  15. }  

 

  这里的外部类StaticClassDemo是一个普通的类,我们可以进一步修改,将StaticClassDemo改为一个抽象类,那么,我们就可以在抽象类中附带一个默认的实现,代码如下:

 

[java] view plaincopy
  1. package net.moon.insignificant.staticclass;  
  2.   
  3. public abstract class StaticClassDemo {  
  4.   
  5.     public static void main(String[] args) {  
  6.         StaticClassDemo.InnerClass ic = new StaticClassDemo.InnerClass();  
  7.         ic.showMessage("Hello, world");  
  8.     }  
  9.   
  10.     public abstract void showMessage(String msg);  
  11.       
  12.     static class InnerClass extends StaticClassDemo{  
  13.         public void showMessage(String msg){  
  14.             System.out.println(msg);  
  15.         }  
  16.     }  
  17. }  

 

  当然,更进一步,我们也可以用这种方式给接口提供默认的实现,代码如下:

 

[java] view plaincopy
  1. package net.moon.insignificant.staticclass;  
  2.   
  3. public interface StaticClassDemo {  
  4.   
  5.     public void showMessage(String msg);  
  6.       
  7.     static class InnerClass implements StaticClassDemo{  
  8.         public void showMessage(String msg){  
  9.             System.out.println(msg);  
  10.         }  
  11.           
  12.         public static void main(String args[]){  
  13.             StaticClassDemo.InnerClass ic = new StaticClassDemo.InnerClass();  
  14.             ic.showMessage("Hello, world");  
  15.         }  
  16.     }  
  17. }  

 

分享到:
评论

相关推荐

    Java static修饰方法

    Java static修饰方法。例子仅供参考。

    Static修饰内部类

    彦舜原创,CSDN首发:希望对你有所帮助,仅此而已。内容工整规范,是作者本人,逐句敲出来,同时也含有个人的一些独见。

    Java static修饰成员变量

    Java 关键字修饰成员变量例子。

    Static和Final修饰类属性变量及初始化

    1.static修饰一个属性字段,那么这个属性字段将成为类本身的资源,public修饰为共有的,可以在类的外部通过test.a来访问此属性;在类内部任何地方可以使用.如果被修饰为private私有,那么只能在类内部使用.

    C#25个问题 静态成员和非静态成员的区别等等

    1.静态成员和非静态成员的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用? 6.sealed 修饰符是干什么的?...可以和 override 一起使用吗?

    c++中的static修饰符示例详解

    本文主要给大家介绍了关于c++中static修饰符的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 下面一段是引用自effective c++ 中的一句话: 所谓的static对象,其寿命是从构造出来到...

    C#基础概念二十五问

    可以和 override 一起使用吗? 15.接口可以包含哪些成员? 16.类和结构的区别? 17.接口的多继承会带来哪些问题? 18.抽象类和接口的区别? 19.别名指示符是什么? 20.如何手工释放资源? 21.P/Invoke是什么? 22....

    C#的25个问题(内附代码示例)

    可以和 override 一起使用吗? 15.接口可以包含哪些成员? 16.类和结构的区别? 17.接口的多继承会带来哪些问题? 18.抽象类和接口的区别? 19.别名指示符是什么? 20.如何手工释放资源? 21.P/Invoke是什么? 22....

    auto、register、static、extern等存储类修饰符的区别.

    auto、register、static、extern等存储类修饰符的区别.

    JS中的public和private对象,即static修饰符

    先看下面的例子,它将告诉我们在JS世界中也有C#里的public , private ,及static等

    C#基础概念.doc

    可以和 override 一起使用吗? 15、接口可以包含哪些成员? 16、类和结构的区别? 17、接口的多继承会带来哪些问题? 18、抽象类和接口的区别? 19、别名指示符是什么? 20、如何释放非托管资源? 21、P/Invoke...

    Java下static关键字用法详解

    Static关键字可以修饰什么?  从以下测试可以看出, static 可以修饰:  1. 语句块  2. 成员变量(但是不能修饰局部变量)  3. 方法  4. 接口(内部接口)  5. 类(只能修饰在类中的类, 即静态内部类)  6. ...

    你必须知道的C#的25个基础概念(附源码)

    答:静态变量:静态变量使用 static 修饰符进行声明在所属类被装载时创建通过类进行访问所属类的所有实例的同一静态变量都是同一个值非静态变量:不带有 static 修饰符声明的变量称做非静态变量在类被实例化时创建...

    常见 ASP.NET 概念(开源,说明)

    可以和 override 一起使用吗? 15.接口可以包含哪些成员? 16.类和结构的区别? 17.接口的多继承会带来哪些问题? 18.抽象类和接口的区别? 19.别名指示符是什么? 20.如何释放非托管资源? 21.P/Invoke是什么? 22....

    c#基础学习问答c#基础学习问答

    可以和 override 一起使用吗? 15.接口可以包含哪些成员? 16.类和结构的区别? 17.接口的多继承会带来哪些问题? 18.抽象类和接口的区别? 19.别名指示符是什么? 20.如何释放非托管资源? 21.P/Invoke是什么? 22....

    static final 包 权限修饰符 内部类 的脑图

    static final 包 权限修饰符 内部类 的思维导图

    C++中的static修饰的变量和函数

     static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成员函数。这意味着一个静态成员函数只能访问它的参数、类的静态数据成员和全局变量。  不能用const的原因:一个静态成员函数访问的值是其...

    extern、static修饰变量的使用及define和const区别

    extern、static修饰变量的使用及define和const区别可结合博客http://blog.csdn.net/error/404.html?from=http%3a%2f%2fblog.csdn.net%2faiyang10%2farticle%2fdetails%2f49448591理解

    extern_volatile等修饰符的用法

    volatile修饰的变量可以被不同的线程访问和修改,常用于像中断处理程序之类的异步进程进行内存单元访问。 2. 使用volatile volatile与变量连用,可以让变量被不同的线程访问和修改,提高代码的可读性和安全性。 ...

    C语言static修饰函数详细解析

    以下是对C语言中的static修饰函数进行了详细的分析介绍,需要的朋友可以过来参考下

Global site tag (gtag.js) - Google Analytics