본문 바로가기

IT自主学習 (2023.05.23~)/Java(2023.05.23~)

プログラミング自主学習 17日目 メソッドの出力/メソッドの活用/アクセス修飾子

メソッドの出力

戻り値(リータン値)
呼び出された関数、メッソドなどが処理を終了する後に戻ってくる値。

メッソドの種類
戻り値があるㅡメソッド
戻り値がないメソッド(void)

参照:Youtube '홍팍';[자바 기초 11] 메소드와 리턴값
参照:Youtube '홍팍',[자바 기초 11] 메소드와 리턴값

 

 

今まではsysoutのように、コンソールに出力するのみに終わるコードを勉強したが、

戻り値を活用することで、sysoutの形ではなく、一つの値として存在するので、

メッソドの活用度が向上した。

 


メソッドの活用

次はメソッドを使用し、以前作成したアプリケーションを改善してみる。

以下は税金と配当額を計算するアプリケーションである。

public class AccountingApp2 {

public static void main(String[] args) {

//供給価格
double valueOfSupply = 10000.0;
//消費税率
double vatRate = 0.1;
//消費税額
double vat = valueOfSupply*vatRate;
//商品総額
double total = valueOfSupply+vat;

System.out.println("value of supply : "+ valueOfSupply);
System.out.println("VAT : " +vat);
System.out.println("Total : "+total); }

}

 

1) メイン関数の外にメソッドを作成し、戻り値を設定する。

public class AccountingApp2 {
pubilc static double getVAT(){
return valueOfSupply*vatRate;
}

public static void main(String[] args) {

//供給価格
double valueOfSupply = 10000.0;
//消費税率
double vatRate = 0.1;
//消費税額
double vat = valueOfSupply*vatRate;
//商品総額
double total = valueOfSupply+vat;

System.out.println("value of supply : "+ valueOfSupply);
System.out.println("VAT : " +vat);
System.out.println("Total : "+total); }

}

 

 

 

2) メイン関数内の地域変数をグローバル変数に変換する。

public class AccountingApp2 {
//供給価格
public static double valueOfSupply = 10000.0;
//消費税率
public static double vatRate = 0.1;
pubilc static double getVAT()
{return valueOfSupply*vatRate;}
public static void main(String[] args) {

//消費税額
double vat = getVAT()
//商品総額
double total = valueOfSupply+vat;

System.out.println("value of supply : "+ valueOfSupply);
System.out.println("VAT : " +vat);
System.out.println("Total : "+total); }

}

 

例えば、こちらのアプリケーションが複雑で1億行目のコードがあるプログラムだと仮定する。

修正することになった場合、一行一行直接修正するのは手間がかかる。

しかし、getVAT()にメッソド化することにより、戻り値を修正するだけで、全てのロジックを修正することができる。


アクセス修飾子(Access Level Modifiers)

全てのjavaプログラムはクラスで構成されており、各クラスにはクラス固有のメンバー(変数【フィールド】とメッソド)が存在する。

 

例えば、LINEには「メッセージを送る」や「電話をする」といった機能が、メソッドとして実装されているはずだ。

 

多くのプログラムではセキュリティのためメッソドの自由な修正が制限されている。なぜなら、プログラムのロジックを誰かが勝手に変更することでエラーが生じたり、企業側から沢山の費用と時間を投資して作成したコード(メッソド)を盗まれる可能性もあるためである。

 

そのため、我々はアクセス修飾子を活用することができる。

 

アクセス修飾子とは、クラスのメンバー(変数とメソッド)をどのぐらい自由に使用できるか制御する言葉である。

それぞれのアクセス修飾子により、アクセス権限が異なる。セキュリティやデータの隠蔽、コードの利便性などの目的で、適切なアクセス修飾子を使用してメンバーのアクセス範囲を制御することが重要だ。

 

アクセス修飾子は以下の通りである。

 

Public:どのパッケージやクラスからでもアクセス可能である。他のパッケージやクラスより自由に使用することができる。ライブラリはPublicである。

 

Protected同じパッケージ内の同じクラスと他のクラスや他のパッケージに辱するサブクラスからアクセス可能である。サブクラスのみアクセスを許可することで、継承を通じて機能を拡張する際に役に立つ。

 

Defalut同じパッケージ内の同じクラスと他のクラスからのみアクスルができる。同じパッケージのみアクセスでできるため、関連するクラスが連携できるが、外部のパッケージには非公開である。

 

Private: 同じクラス内からのみアクセス可能で、他のクラスやパッケージから完全に非公開となっているため、セキュリティレベルが一番高い。

 

 

Public vs Private

 

クラスPrintは両方Public メソッドであるため、外部からも自由に使用ができる。

 

 

しかし、先ほどのクラスPrintのメソッドa()をPrivateに変更した結果、外部のクラスよりは利用できないことが分かる。