簡體   English   中英

修飾符的非法組合:公共和私有

[英]Illegal combination of modifiers: public and private

我遇到以下代碼的問題...

/**
 * This class holds all of the information pertaining to 
 * a person's name.
 */
public class Name {

    private String first, middle, last, maiden, initials, prefix, suffix;
    private char middleInitial, firstInitial, lastInitial;
    private

    /**
     * Constructor for a Name given first, middle, and last names.
    */
    public Name(String first, String middle, String last) {

        this.first = first;
        this.middle = middle;
        this.last = last;
        this.middleInitial = middle.charAt(0);
        this.firstInitial = first.charAt(0);
        this.lastInitial = last.charAt(0);
        this.initials = String.valueOf(firstInitial + middleInitial 
            + lastInitial);
        this.maiden = null;
        this.prefix = null;
        this.suffix = null;

    }

還有更多,但我的錯誤是在我的主要構造函數中。 它給了我在標題中輸入的錯誤。 如您所見,我的類和構造函數都是公共的。 這不應該引起任何問題,但似乎正在這樣做。

在構造函數的注釋之前有一個“孤兒” private修飾符:

private // Here!

/**
 * Constructor for a Name given first, middle, and last names.
 */
public Name(String first, String middle, String last) {

只需刪除它,你應該沒事。

班里的第三行有一個流浪private 由於語句持續到遇到大括號或分號,編譯器認為這是與構造函數聲明相同的語句的一部分 - 它看到private public Name(String first, String middle, String last)

聲明所有變量后,您已將關鍵字寫為private

private String first, middle, last, maiden, initials, prefix, suffix;
private char middleInitial, firstInitial, lastInitial;
private  // Here.  

Java是一種自由鍵入的語言。 一條線以a結尾; (半冒號)而不是換行符。 所以

private  

public Name(String first, String middle, String last) {
    // ...
}  

被認為是一條單行:

private public Name(String first, String middle, String last) {  
  // ...
}  

如您所見,您的構造函數有兩個修飾符, publicprivate 這在Java中是非法的。

  1. 如果要將構造函數保持為private 且不希望其他類實例化它,請刪除關鍵字public

要么

  1. 如果要允許其他類實例化它,請刪除關鍵字private

暫無
暫無

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

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