araharu
@araharu

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Javaのpublic classとclassの違いとは?

解決したいこと

Java初心者の私の疑問を解決して欲しい

本題

Java初心者(というかプログラミングもPythonを1年未満程度)です。
Javaが必要になり勉強しだしたので、教えて欲しいのですが、
最初に書かないといけない1行目が書籍などの違いで以下の2パターンありました。

public class Main {

class Main {

なんの違いでしょうか、というか調べてもこれらのフレームは「おまじない」みたいなものなので初心者のうちは理解しなくていいとありました。なので詳しく理解しようとまでは思っていないのですが、
今後どっちを使っていけばいいのか、またその理由を軽くは理解したいと考えています。
いわばpublicはあったほうがいいのかどうか(いる場面はいつなのか)を知りたいです!
ぜひ教えていただけると幸いです。

0

3Answer

最初に書かないといけない1行目が書籍などの違いで以下の2パターンありました。

2パターンと記載されていますが、私には上も下も同じに見えているのですが・・・

またpiblicではなく、publicです。

0Like

Comments

  1. @araharu

    Questioner

    すいません誤字でした、、、気をつけます。
    修正しました!
    いわばpublicはあったほうがいいのかどうか(いる場面はいつなのか)を知りたいです!

  2. どういった場面でpublicが必要なのか、の前に

    こちらを理解いただく前に、以下を把握しておく必要があります。

    どういった場面でpublicが必要なのか

    他のパッケージのコードから呼び出したい処理を実装したクラスの場合、です。
    以下のように、publicを付けなかった場合、同じパッケージ内からしか呼び出しできなくなります。パッケージの分け方は現場次第です。

    class Main {}
    

    Springフレームワークの場合、controller,service,repositoryといった分け方があったりしますね。

    具体的にどういう処理を実装したクラスにpublicを付与するの?

    たとえばですが、、、以下のような数か所から呼び出す可能性がある処理は、
    他のクラスからも呼び出せるようにしたいので、publicを付与したりします。

    データベースから取得した日付型(DateTime)の日時を、文字列型の日時(String型)に変更し、ハイフンはスラッシュに置き換えてから、値を返す

    こんな回答でいかがでしょうか。

調べてもこれらのフレームは「おまじない」みたいなものなので初心者のうちは理解しなくていいとありました

私個人としては初心者だからこそ理解した方がいいと思います。

publicはアクセス修飾子という概念です。
publicをつけた状態は、全てのクラスからアクセスを許可します。
つけない状態はパッケージプライベートと言い、同じパッケージからだけアクセスを許可します。

1つ例として(正確には正しくないです)publicがついていないクラスはフォルダの外にあるjavaファイルから参照されず、publicがついているクラスはフォルダの外からでも参照できる。フォルダ外から参照されたくないものにはpublicはつけないイメージです。

アクセス修飾子の意義に関してはこちらの記事がわかりやすいかもなのでどうぞ。
理解するのにはもう少し時間がかかるかもしれませんが。

0Like

Your answer might help someone💌