`

类可以被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修饰成员变量

    最后,`static`可以修饰内部类,这种内部类被称为静态内部类,它可以独立于外部类的实例存在,因为它不持有对外部类的引用。这使得静态内部类可以像普通类一样被创建和使用。 综上所述,`static`关键字在Java中具有...

    Java static修饰方法

    当一个方法被声明为`static`时,我们称其为静态方法,它可以直接通过类名调用,无需创建类的实例。 静态方法的主要特点包括: 1. **存储区**:静态方法存储在方法区,而非堆内存中的对象实例。因此,它们的生命...

    理解java中的类的各种权限修饰符

    - 如果一个类被声明为`public`,那么它可以在任何地方被访问到。 - 在Eclipse等IDE中,一个类文件只能包含一个`public`类,且该类文件的命名必须与其类名一致。 - **应用场景**: - `public`修饰符常用于定义API...

    Static修饰内部类

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

    要static还是不要static?

    在编程世界中,"static" 是一个非常关键的修饰符,它在 Java 语言中扮演着重要的角色。本文将深入探讨 "static" 关键字的含义、用途以及何时选择使用或不使用它。我们将通过分析《要 static 还是不要 static?》这篇...

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

    在C#等静态类型语言中,public、private和static是访问修饰符,用于控制类成员的可见性和作用域。而在JavaScript中,由于其原型继承的特性,我们通常使用函数作用域和闭包来模拟这些行为。 下面我们将基于提供的...

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

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

    Java修饰符使用整理(含实例)

    static 修饰的成员变量和方法可以在不创建实例对象的情况下被访问。 (三)abstract 修饰符 abstract 修饰符用于控制类和方法的继承关系。abstract 修饰的类不能被实例化,abstract 修饰的方法必须被子类实现。 ...

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

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

    类修饰符,用于对类的特性

    - **定义**:`public`是访问修饰符的一种,表示该类可以在任何地方被访问。 - **应用场景**: - 当需要让其他类或程序集中的代码能够访问该类时。 - 当类作为公共API的一部分时,通常会使用`public`。 #### ...

    类的static,const,static const,const static成员的初始化

    经过查阅相关资料和做了相关实验后,我们确认了只要用 static 关键字修饰的成员的初始化方式和只有 static 关键字修饰的成员一样,都必须在类体外初始化,而无论 static 在 const 前面还是后面。 例如: ```cpp ...

    C#类修饰符大全

    - **sealed**:防止类被进一步继承,确保类的完整性和稳定性。这在设计模式中常用于创建不可变的类。 - **static**:定义静态类,意味着该类不能被实例化,所有成员都必须是静态的。静态类常用于工具类或只提供静态...

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

    通过以上分析,我们可以看出`auto`、`register`、`static`和`extern`这些存储类修饰符在C语言中扮演着重要角色,它们不仅控制着变量的生存周期,还决定了变量的可见性和访问范围。合理地使用这些修饰符可以提升代码...

    Java访问修饰符

    static 方法访问修饰符表示静态方法,可以被类的所有实例共享,不需要创建类的实例就可以访问。 final 方法访问修饰符 final 方法访问修饰符表示防止任何子类重载该方法。 abstract 方法访问修饰符 abstract ...

    Java编程中常用修饰词使用方法

    static 修饰的成员属于类,而不是实例,static 方法可以被类名直接调用。static 字段是类字段,无论该字段所在的类创建了多少实例,该字段只存在一个实例。初始化函数是在装载类时执行的,而不是在创建实例时执行的...

    浅谈java中的声明常量为什么要用static修饰

    在Java中,`static`修饰的成员属于类本身,而不是类的实例(对象)。这意味着无论创建了多少个对象,`static`修饰的成员只会在内存中存在一份副本。因此,当我们声明一个常量并使用`static`修饰时,如: ```java ...

    C#程序设计-3期(KC008) KC008110100018-怎样区别const, static和readonly?.docx

    `static`修饰的是类级别的成员,不依赖于类的实例,可以直接通过类名访问;`readonly`修饰的字段则是在运行时初始化,但一旦初始化后就不能再更改。理解和合理运用这三个关键字,对于编写高效、稳定的C#代码至关重要...

    java中static作用

    只要这个类被加载,Java 虚拟机就能根据类名在运行时数据区的方法区内定找到它们。因此,static 对象可以在它的任何对象创建之前访问,无需引用任何对象。 静态方法 静态方法可以直接通过类名调用,任何的实例也都...

Global site tag (gtag.js) - Google Analytics