注册 登录
编程论坛 JAVA论坛

为什么不能用类名引用?

yhmwajxx 发布于 2024-04-12 21:06, 2671 次点击
public class Test{   
    public static void main(String[] args){
        Student st=new Student();
        Test.st.exam();
    }
}
class Student{
    public void exam(){
        System.out.println("考试啦 。。。。。");
    }
}
===========以下是编译提示===============================
Test.java:6: 错误: 找不到符号
                Test.st.exam();
                    ^
  符号:   变量 st
  位置: 类 Test
1 个错误
3 回复
#2
apull2024-04-23 00:16
st是main里的局部变量,Test识别不到。你这种写法适合静态Test内变量
#3
得鹿为鱼2024-11-12 14:41
回复 楼主 yhmwajxx
简单来说直接使用 st.exam(); 因为st并不是Test的静态成员变量,如下所示:

程序代码:
public class Test{   
    public static void main(String[] args){
        Student st=new Student();
        st.exam();
    }
}
class Student{
    public void exam(){
        System.out.println("考试啦 。。。。。");
    }
}
#4
joi20772025-03-12 02:34
在 Java 中,类名不能直接引用实例变量,因为实例变量(非 static)属于对象,而不属于类本身。

1. Test.st 并没有定义,Test 类中没有 st 这个静态变量。
2. st 是 main 方法的 局部变量,不能通过 Test.st 访问。
3. exam() 方法是 Student 的实例方法,不能直接通过类名调用,必须通过对象来调用。

这里是更正过的可运行的代码:

程序代码:

public class Test {   
    public static void main(String[] args) {
        Student st = new Student();  // 创建 Student 对象
        st.exam();  // 正确:使用对象调用方法
    }
}

class Student {
    public void exam() {
        System.out.println("考试啦 。。。。。");
    }
}


点这里可直接运行:https://www.job404coder.site/share?share_id=1899529269782089730
1