Java 打印语句和类定义是如何工作的

Java 打印语句和类定义是如何工作的,java,class,println,Java,Class,Println,1.为什么编译器在“class Human”一行给出警告,说这行有多个标记,类型Human已经定义,并且出现了“Human” 2.即使我将行“System.out.println(aPerson.getHeight());”更改为“aPerson.getHeight();”,它仍然在控制台窗口中打印输出。打印在JAVA中如何工作 public class HelloWorld{ public static void main(String[] args){ Human a

1.为什么编译器在“class Human”一行给出警告,说这行有多个标记,类型Human已经定义,并且出现了“Human”

2.即使我将行“System.out.println(aPerson.getHeight());”更改为“aPerson.getHeight();”,它仍然在控制台窗口中打印输出。打印在JAVA中如何工作

public class HelloWorld{
    public static void main(String[] args){
        Human aPerson = new Human(160);
        System.out.println(aPerson.getHeight());
    }
}

class Human{

   /**
    * constructor
    */
    Human(int h){
        this.height = h;
        System.out.println("I'm born");
    }

   /**
    * accessor
    */
    int getHeight(){
        return this.height;
    }

    int height;
}

您没有向类附加任何访问修饰符(public/protected/private),因此它在整个包中都是可见的,包括Test.java(您已经声明它还包含一个名为Human的类)和Test1.java,同时显示两个同名的类是非法的


如果这些类是同一个类,只需删除其中一个类定义;您只需要定义一次类。如果事实上您正在定义不同类型的人员,请重命名其中一个类以区分它们。

同一文件中不能存在两个类。很抱歉,我以前没有看到快照

System.out只是PrintStream的一个实例。你可以查看它的JavaDoc。其可变性基于方法重载(多个方法具有相同的名称,但参数不同)

此打印流正在将其输出发送到所谓的标准输出


您将在该链接中获得更多详细信息

您能粘贴准确的错误消息和行号吗?您的代码按原样编译和运行-我无法再现任何错误或警告。我在帖子上附上了一个屏幕截图。错误表明您还在其他位置定义了类Human,例如Test。java@Jackie对您没有向类附加访问修饰符(public/protected/private),因此它在整个包中都是可见的,包括Test.java和Test1.java,同时显示两个同名的类是非法的。False,您可以将任意多个包私有类放入一个文件中;你只能上一堂公共课。然而,在一个文件中有多个类是不典型的。此外,虽然这回答了他在标题中提出的问题,但这并不能解决他的问题,实际上与打印语句无关。