基本情報技術者試験に合格、Webクリエイター能力認定試験に合格しても、IT企業就職出来ず貯金も尽きそうな元ホームレス、10日でJava Gold&Silver出題範囲をマスターし、最後の資格試験に挑む。【第5日目】クラス構造
Java特有のヤツ、クラスだの継承ですね。
継承とかはJava Goldの出題範囲かな?
//以下ソース
/*クラス構造・継承
※スマホプログラミングのため字下げ無し。*/
//クラス、クラス名の最初は大文字。
class A{static void a(){X.s("Aクラス");}}
class B extends A{static void b(){X.s("を継承したAのサブクラスB");}}
class X{//インナークラスを持つものをアウタークラスと呼びます。
class I{I(){s("インナークラス");}}
static class S{S(){s("staticインナークラス");}}
//フィールド(変数)finalを付けると変更できない定数となります。
final String a="クラスからアクセス可能";
String b="同パッケージ";
public String c="publicは全"+a;
protected String d="\nprotectedは"+b+"かサブ"+a;
private String e="\nprivateは同"+a;
String f="\n省略は同パッケージの"+a;
//引数無しコンストラクタ
X(){this("引数がありませんをthisで文字列有りコンストラクタへ");}
//引数無しに追加する引数有りコンストラクタ(オーバーロード)
X(String x){s("文字列 "+x);}
X(int x,int y){s("x+y "+(x+y));}
//メインメソッド
public static void main(String[]args){
t("メインメソッドの上に色々書いても、メインメソッドから開始です。");
s("コンストラクタはクラスと同名のメソッド、普通のメソッドと違いインスタンス化せずにnew演算子で使えますがreturnで戻り値を返せません。");
new X(1,2);new X("あいう");
X k=new X();//インスタンス化
t("インスタンスメソッド実行、インスタンス化以降使えます。");
s("アクセス修飾子解説");
k.l();
t("staticメソッド(クラスメソッド)");
s("インスタンス化不要、但し多様禁物。");
t("int型引数を2つ受け取り、和をint型戻り値で返すstaticメソッドに9,7送信");
s(""+v(9,7));
t("インナークラス、staticインナークラス、別クラス");
k.new I();new S();new B();
s("インナークラスはアウタークラスをインスタンス化しないと実行出来ず、別クラスより面倒ですが、Javaの特徴であるカプセル化が出来るようです。別クラスは別ファイルにもできますが、スマホの場合は1ファイルにまとめた方が楽です。");
t("継承extends");
s("Bクラスにはaメソッドは記述されてませんが、Aクラスを継承しているので、Bクラスの中にaメソッドも存在します。");
A.a();B.a();B.b();
}
//インスタンスメソッド
void l(){s(c+d+e+f);}
//staticメソッド
static void s(String u){System.out.println(u);}
static void t(String u){s("\u001b[00;44m"+u+"\u001b[00m");}
static int v(int x,int y){
return x+y;
}
}
//以上ソース