私は、Javaを勉強し始めました。
私は行き詰まって一つの部分は、他のクラスから発信されたオブジェクトを作成し、使用する方法についてです。
ディレクトリ構造:
/temp_dir/Java_code
Main.java
/java_db_code/
User_Table.java
ソースコードは、これらのようなものです。
// File: /temp_dir/Java_code/Main.java
package temp_dir.java_code; // Package configuration of this java file
import temp_dir.java_code.java_db_code.User_Table; // import other class
public class Main
{
public static void main(String[] args)
{
int temp=5;
// Create obj_user_table object from User_Table class located in package of temp_dir.java_code.java_db_code.User_Table, through its int parameterized constructor
User_Table obj_user_table=new User_Table(temp);
System.out.println(obj_user_table);
// Expected: obj_user_table object
System.out.println(obj_user_table.user_a);
// Expected: 5
}
}
// File: /temp_dir/Java_code/java_db_code/User_Table.java
package temp_dir.java_code.java_db_code;
public class User_Table
{
public User_table(int a)
{
this.user_a=a;
}
}
ラン
cd /temp_dir/Java_code
javac -d . Main.java ./java_db_code/User_Table.java
エラー
./java_db_code/User_Table.java:22: error: invalid method declaration; return type required
public User_table(int a)
^
1 error
私が書いたpublic User_table(int a)
中User_Table.java
コンストラクタとして
しかし、エラーがいるという理由を私は知りませんinvalid method declaration; return type required
メソッド名は、大文字と小文字が区別される:User_table
と同じではないUser_Table
(通知資本T)。コンストラクタは、クラスのように使用することをまったく同じ名前を持つ必要がありますUser_Table
。
コンストラクタ内であなたが行う:あなたがいることを修正したら、それでも、コンパイラはもうひとつ文句を言うだろう
this.user_a=a;
しかしuser_a
、コンパイラはエラーをスローにするであろう、あなたのクラスで宣言されていません。それを修正するには、あなただけのクラスでそれを宣言する必要があり、あなたはクラスの外のフィールドにアクセスできるようにするため、(例えば、中にはMain.main()
)それを作りますpublic
:
public class User_Table
{
public int user_a;
public User_table(int a)
{
this.user_a=a;
}
}
勧告として、あなたが本当にJavaの命名とスタイル規則を次のよう考慮する必要があります-あなたはより多くの空白を使用する必要があります:this.user_a = a
、int temp = 5
、obj_user_table = new
-クラス名が使用UpperCamelCase
下線なしで、:UserTable
-メソッド、変数名が使用lowerCamelCase
下線なしで、:userA
これは、コードの機能を変更しませんが、それは他のJavaユーザーにとってより読みやすく、標準になります。