実現したいこと
Processingで、クラスのカプセル化を行いたいです。
前提
Processing でクラスのカプセル化を行う方法をご教授いただきたいです。
Processingでクラスを作成し、メンバ変数に private指定 を行いました。
そして、setup関数内で作成したクラスをインスタンス化し、メンバ変数にアクセスしました。
private指定しているメンバ変数にアクセスしようとしているため、
エラーが出る想定だったのですがエラーが出ず実行されたという状態です。
※エラーが出る想定の行:Main.pdeの6行目
私の記述が悪いのか、Processingではそもそもこのような手法ではカプセル化ができないのか、
公式リファレンスなどを参照しましたが理解ができませんでした。
お手数ですがご確認いただけますと幸いです。
該当のソースコード
Main.pde
1void setup() { 2 3 Test b = new Test(); 4 Student a = new Student(1, "sasaki"); 5 6 a.name = "sasaki"; 7 8 println(a.getStudentNo() + ":" + a.getName()); 9 10 // Processing実行ウィンドウを閉じる 11 exit(); 12}
Student.pde
1class Student { 2 3 // メンバ変数 4 private int studentNo; // 学生番号 5 private String name; // 名前 6 7 // コンストラクタ 8 Student(int studentNo, String name) { 9 this.studentNo = studentNo; 10 this.name = name; 11 } 12 13 // メソッド 14 int getStudentNo() { 15 return this.studentNo; 16 } 17 String getName() { 18 return this.name; 19 } 20 void setStudentNo(int studentNo) { 21 this.studentNo = studentNo; 22 } 23 void setName(String name) { 24 this.name = name; 25 } 26}
試したこと
1. Processingの公式リファレンス等を参照
・公式リファレンス:https://processing.org/reference/private.html
以下が公式リファレンスに記述してある内容です。
This keyword is used to disallow other classes access to the fields and methods within a class. The private keyword is used before a field or method that you want to be available only within the class. In Processing, all fields and methods are public unless otherwise specified by the private keyword.
This keyword is an essential part of Java programming and is not usually used with Processing. Consult a Java language reference or tutorial for more information.
この内容を見ると、privateキーワードを使用することで「クラスのメンバ変数について、他のクラスからアクセスできないようにする」ことができるように見受けられます。
2. privateキーワード以外を指定
以下のように、privateキーワード以外を使用してプログラムを実行してみました。
しかし、事象は変わりませんでした(エラーがなく実行される)。
Student.pde
1class Student { 2 3 // メンバ変数 4 protected int studentNo; // 学生番号 5 protected String name; // 名前 6 7 // コンストラクタ 8 Student(int studentNo, String name) { 9 this.studentNo = studentNo; 10 this.name = name; 11 } 12 13 // メソッド 14 int getStudentNo() { 15 return this.studentNo; 16 } 17 String getName() { 18 return this.name; 19 } 20 void setStudentNo(int studentNo) { 21 this.studentNo = studentNo; 22 } 23 void setName(String name) { 24 this.name = name; 25 } 26}
補足情報(FW/ツールのバージョンなど)
Processingのバージョンは Processing 4 です。

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/09/05 05:32
2023/09/05 06:01