見出し画像

基本情報技術者試験に合格、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;

}

}

//以上ソース

いいなと思ったら応援しよう!