Java编程语言中如何不使用对象即可访问类?
Java 无需实例化对象访问类的实现方式
Java 中不需要创建类的实例对象即可访问类相关内容的方式,核心依赖 static 关键字实现,被 static 修饰的内容属于类本身,会在类加载阶段完成初始化,不依赖实例对象的生命周期。
1. 访问类的静态成员
针对类的属性和方法,只要用 static 修饰,就可以直接通过类名.成员名的方式访问,不需要创建类对象。
示例代码如下:
class Test{ // 静态属性:属于类本身,全局只有一份 public static String staticAttr = "无需实例即可访问的静态属性"; // 普通属性:属于实例对象,必须创建对象才能访问 public String normalAttr = "需要实例才能访问的普通属性"; // 静态方法:属于类本身,可直接调用 public static void staticMethod() { System.out.println("无需实例即可调用的静态方法"); } // 普通方法:属于实例对象,必须创建对象才能调用 public void normalMethod() { System.out.println("需要实例才能调用的普通方法"); } }
调用示例:
public class RunTest { public static void main(String[] args) { // 无需创建Test类对象,直接通过类名访问静态成员 System.out.println(Test.staticAttr); Test.staticMethod(); // 以下写法编译报错,普通成员必须依赖实例对象访问 // System.out.println(Test.normalAttr); // Test.normalMethod(); } }
2. 获取类本身的Class对象
如果是需要获取类的类型信息用于反射等场景,无需创建类对象,直接通过类名.class即可拿到该类对应的Class实例:
// 无需创建Test对象,直接获取类的Class实例 Class<Test> testClazz = Test.class; // 输出类的全限定名 System.out.println(testClazz.getName());
补充说明
- 静态方法内部只能直接访问静态成员,无法直接访问非静态成员,非静态成员的存在依赖实例对象
- 如果是静态内部类,也可以直接通过
外部类.静态内部类的方式访问,不需要创建外部类的实例对象
内容的提问来源于stack exchange,提问作者Urmil Rupareliya
相关产品推荐
相关产品推荐

