簡體   English   中英

我如何在 JDK 8 中運行這個簡單的代碼?

[英]How could I run this simple code in the JDK 8.?

誰能告訴我如何使用 JDK 8 編譯這段代碼。我試過了,但它讓我對代碼中定義的公共類感到困惑。 我用公共類的名稱保存了代碼文件,但它不起作用。 代碼如下:

public class Test{
  public static void main(String args[]){
    Person j;
    j=new Person("John");
    j.setAge(20);
    celebrateBirthday(j);
    System.out.println(j.getAge());
  }

  static void celebrateBirthday(Person p){
    p.setAge(p.getAge() + 1);
  }
}

public class Person{
  private String name;
  private int age;

  Person(String n){
    this.name = n;
  }

  public int getAge(){
    return age;
  }

  public void setAge(int a){
    this.age = a;
  }
} 

編譯器顯示錯誤如下:

C:\Users\soman\Desktop>javac Test.java
Test.java:15: error: class Person is public, should be declared in a file named Person.java
public class Person{
             ^
1 error

注意 - 我在 32 位系統中使用 JDK(1.8)。

每個public class 都需要位於其自己的單獨文件中,該文件以 class 名稱命名(這正是錯誤消息的含義)。 因此一個文件Test.java包含public class Test和一個名稱Person.java包含public class Person

一個 Java 源文件只能將一個 class 聲明為公共,我們不能將兩個或多個公共類放在一個.java 文件中。 這是因為文件名必須與擴展名為.java 的公共 class 的名稱相同的限制 如果我們想要將考慮中的多個類聲明為公共,我們必須將它們存儲在單獨的源文件中,並附加 package 語句作為這些源文件中的第一條語句。

在您的代碼中,您應該將您的 Person class 聲明為

public class Test{
  public static void main(String args[]){
    Person j;
    j=new Person("John");
    j.setAge(20);
    celebrateBirthday(j);
    System.out.println(j.getAge());
  }

  static void celebrateBirthday(Person p){
    p.setAge(p.getAge() + 1);
  }
}

 class Person{
  private String name;
  private int age;

  Person(String n){
    this.name = n;
  }

  public int getAge(){
    return age;
  }

  public void setAge(int a){
    this.age = a;
  }
} 

或者為 Person class 創建單獨的文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM