質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

21806閲覧

コンストラクタの前につくpublicの必要性

reotantan

総合スコア295

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

2クリップ

投稿2015/09/18 10:57

このコードの書くコンストラクタの前にpublicをつけるとどういう違いが生まれますか?
publicを使う目的は何でしょうか?
教えてください

String name; // メンバ1 int birthday; // メンバ2 int manpukudo; // メンバ3 Human(String name, int birthday, int manpukudo){ // コンストラクタ1 this.name = name; this.birthday = birthday; this.manpukudo = manpukudo; } Human(String name, int birthday){ // コンストラクタ2 this(name, birthday, 50); } Human(){ // コンストラクタ3 this("不明", 0, 50); } void eat(){ // メンバ4 this.manpukudo += 60; } } コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

publicはアクセス修飾子のひとつです。

アクセス修飾子には下記の種類があります。

  • private:同じクラス内からのみ参照可能。(同じクラスのインスタンスからであれば参照可能。)
  • 指定なし(パッケージプライベート): 同じパッケージ内からのみ参照可能。
  • protected:同じパッケージか、そのサブクラスからのみ参照可能。
  • public:すべてのクラスから参照可能。

publicにすれば、コンストラクターを呼び出すクラスがHumanのパッケージと異なっていてもサブクラスでなくても、呼び出すことができます。
付けないと、Humanと同じパッケージのクラスからしか呼び出せません。

投稿2015/09/18 11:02

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

メソッド定義時につける public, private と同じで コンストラクのアクセス範囲を規定することになります。

コンストラクタにアクセス就職子を指定するというのは、そのクラスのインスタンスをつくることができる範囲を規定することになります。

インスタンスを作ってもらては困るクラスについては、コンストラクタに private を指定するという使い方があります。
例: System クラス

... Systemクラスには有用なクラス・フィールドおよびメソッドがあります。インスタンス化することはできません。 ..

参考情報:

投稿2015/09/18 14:17

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まず、publicをつけないコンストラクタSample1を定義

package hoge; public class Sample1 { Sample1() { System.out.println("hoge"); } }

パッケージの異なるクラスSample2に実装しようとすると、ビルドエラーになる。

package huga; import hoge.Sample1; public class Sample2 { public void main(String[] args) { new Sample1(); } }

なので、特にこだわりがなければ、publicを付けておいたほうがいい。
蛇足ですが、protectedは抽象クラスにしたい場合、privateはシングルトンにしたい場合に使います。

投稿2015/09/18 12:35

TetsujiMiwa

総合スコア1124

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

通常のメソッドに付けるアクセス修飾子と同様に作用します。
コンストラクタのアクセス修飾子を設定します。
・public:どこからでもnewできます。
・デフォルト:パッケージ内のクラスからnewできます。
・private:クラス内からしかnewできない
簡単に説明しましたが、それぞれの使い方は奥が深いので是非、調べてみてください。

投稿2015/09/18 11:49

編集2015/09/18 11:50
yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問