Home >Java >javaTutorial >Detailed explanation of code examples of Static class in Java

Detailed explanation of code examples of Static class in Java

黄舟
黄舟Original
2017-03-16 10:38:151194browse

This article mainly introduces Static class detailed explanation and related information of example code in Java. In Java we can have staticinstanceVariables, static methods, static blocks. Classes can also be static. Friends in need can refer to

Detailed explanation of Static class in Java

Can classes in Java be static? The answer is yes. In Java we can have static instance variables, static methods, and static blocks. Classes can also be static.

Java allows us to define static classes within a class. Such as inner class (nested class). The class that encloses the nested class is called an outer class. In java, we cannot use static to modify the top-level class (top level class). Only inner classes can be static.

What is the difference between static inner classes and non-static inner classes? Here are the main differences between the two.

(1) Internal static classes do not need to have references pointing to external classes. But non-static inner classes need to hold a reference to the outer class.

(2) Non-static inner classes can access static and non-static members of outer classes. Static classes cannot access non-static members of outer classes. He can only access static members of the outer class.

(3) A non-static inner class cannot be created without the outer class entity. A non-static inner class can access the data and methods of the outer class because it is inside the outer class.

Based on the above discussion, we can use these features to make programming simpler and more effective.


/* 下面程序演示如何在java中创建静态内部类和非静态内部类 */
class OuterClass{
  private static String msg = "GeeksForGeeks";

  // 静态内部类
  public static class NestedStaticClass{

    // 静态内部类只能访问外部类的静态成员
    public void printMessage() {

     // 试着将msg改成非静态的,这将导致编译错误 
     System.out.println("Message from nested static class: " + msg); 
    }
  }

  // 非静态内部类
  public class InnerClass{

    // 不管是静态方法还是非静态方法都可以在非静态内部类中访问
    public void display(){
     System.out.println("Message from non-static nested class: "+ msg);
    }
  }
} 

class Main
{
  // 怎么创建静态内部类和非静态内部类的实例
  public static void main(String args[]){

    // 创建静态内部类的实例
    OuterClass.NestedStaticClass printer = new OuterClass.NestedStaticClass();

    // 创建静态内部类的非静态方法
    printer.printMessage();  

    // 为了创建非静态内部类,我们需要外部类的实例
    OuterClass outer = new OuterClass();    
    OuterClass.InnerClass inner = outer.new InnerClass();

    // 调用非静态内部类的非静态方法
    inner.display();

    // 我们也可以结合以上步骤,一步创建的内部类实例
    OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();

    // 同样我们现在可以调用内部类方法
    innerObject.display();
  }
}

The above is the detailed content of Detailed explanation of code examples of Static class in Java. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn