java中有静态类吗?

这样的课有什么意义。静态类的所有方法也需要是静态的吗?

是否反过来要求,如果一个类包含所有静态方法,那么这个类也应该是静态的?

静态类有什么好处?


当前回答

是的,在java中有一个静态嵌套类。 当你声明一个嵌套类静态时,它自动成为一个独立的类,可以实例化,而不必实例化它所属的外部类。

例子:

public class A
{

 public static class B
 {
 }
}

因为类B被声明为静态的,你可以显式实例化为:

B b = new B();

注意,如果类B没有被声明为静态以使其独立,实例对象调用将看起来像这样:

A a= new A();
B b = a.new B();

其他回答

简单地说,Java只支持将一个类声明为内部类的静态,而不支持将顶级类声明为静态。

顶级类:一个java项目在每个java源文件中可以包含多个顶级类,其中一个类以文件名命名。在顶级类前面只允许有三个选项或关键字,public、abstract和final。

内部类:在顶级类内部的类称为内部类,这基本上是嵌套类的概念。内部类可以是静态的。使内部类静态的想法是利用实例化内部类的对象而不实例化顶层类的对象的优势。这与顶级类中的静态方法和变量的工作方式完全相同。

因此Java支持内部类级别的静态类(在嵌套类中)

Java不支持顶级类的静态类。

我希望这可以为基本理解Java中的静态类提供一个更简单的解决方案。

静态方法意味着可以在不创建类对象的情况下访问它,这与public方法不同:

public class MyClass {
   // Static method
   static void myStaticMethod() {
      System.out.println("Static methods can be called without creating objects");
   }

  // Public method
  public void myPublicMethod() {
      System.out.println("Public methods must be called by creating objects");
   }

  // Main method
  public static void main(String[ ] args) {
      myStaticMethod(); // Call the static method
    // myPublicMethod(); This would output an error

    MyClass myObj = new MyClass(); // Create an object of MyClass
    myObj.myPublicMethod(); // Call the public method
  }
}

是的,在java中有一个静态嵌套类。 当你声明一个嵌套类静态时,它自动成为一个独立的类,可以实例化,而不必实例化它所属的外部类。

例子:

public class A
{

 public static class B
 {
 }
}

因为类B被声明为静态的,你可以显式实例化为:

B b = new B();

注意,如果类B没有被声明为静态以使其独立,实例对象调用将看起来像这样:

A a= new A();
B b = a.new B();

好吧,Java有“静态嵌套类”,但它们与c#的静态类完全不一样,如果你是从那里来的的话。静态嵌套类只是一个没有隐式引用外部类实例的类。

静态嵌套类可以有实例方法和静态方法。

在Java中没有顶级静态类这种东西。

除非是内部类,否则不能对类使用static关键字。静态内部类是一个嵌套类,它是外部类的静态成员。可以在不实例化外部类的情况下,使用其他静态成员访问它。就像静态成员一样,静态嵌套类不能访问外部类的实例变量和方法。

public class Outer {
   static class Nested_Demo {
      public void my_method() {
          System.out.println("This is my nested class");
      }
   }
public static void main(String args[]) {
      Outer.Nested_Demo nested = new Outer.Nested_Demo();
      nested.my_method();
   }
}