You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java编译器无法识别自定义类与对象,请求代码问题排查

问题排查与代码修正

我来帮你梳理下代码里的关键问题,这些就是导致编译器无法识别类和对象的原因:


1. 单个源文件的public类限制

Java规定:一个源文件中只能有一个public类,并且这个public类的名称必须和文件名完全一致(比如你的文件如果叫pk1.java,那只能保留public class pk1,另一个sd类不能加public修饰符)。

2. 对象实例化的语法错误

你创建对象的写法sd mark=new mark();完全不符合Java语法,正确的实例化格式是:

类名 对象名 = new 类名();

所以这里应该写成sd mark = new sd();——mark是你给sd类实例起的名字,后面new的必须是类名sd。

3. 错误的属性访问逻辑

你试图用sd.mark.age访问属性,这是把mark当成了sd类的静态成员,但实际上mark是你创建的实例对象,应该直接用mark.age、mark.rollnumber来访问它的属性。另外,你在sd类里定义的public static Object mark;完全多余,还会造成混淆,直接删掉就行。


修正后的完整代码

import java.util.Scanner;

public class pk1 {
    public static void main(String[] args) {
        System.out.println("Enter student name");
        // 正确实例化sd类的对象
        sd mark = new sd();
        Scanner scan = new Scanner(System.in);
        // 直接通过对象实例访问属性
        mark.age = 15;
        mark.rollnumber = 14;
        System.out.println(mark.age);
        System.out.println(mark.rollnumber);
    }
}

// 去掉public修饰符,遵循单个源文件的public类限制
class sd {
    int age;
    int rollnumber;
}

补充说明:如果以后想让sd类在多个文件中复用,可以把它单独放到sd.java文件里,这时就可以给它加上public修饰符了。

内容的提问来源于stack exchange,提问作者Abhilash V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:25:44