✨
ITスクール DAY18 OOP/ネストクラス/匿名クラス
OOP
継承(IS~A) : is a (一般化、拡張)
Aは Bの中で一つ
Aは Bを継承
Aは Bのサブクラス
Aは Bの属性を継承する。
例)
Apple is-a Fruit → リンゴは果物だ。
抽象クラス : is a kind of(~の一種類)
抽象メソッドがある場合は、メソッドの定義が宣言されていないため、
継承するクラスが再定義する必要がある。
主にスパクラスの役割を担当する。(抽象クラス同士も継承ができる。)
インタフェース : be able to
Aは Bをする
Aは Bができる
例)
人間は死んだら、腐る。
プラスチックは腐る。
➞Decable interface!
フィールドをもっていない。(定数はある)
インタフェースはインタフェースを多重継承することができる。
クラスはインタフェースを多重具象することができる。
基本的にpublicだ
void go();
[public abstract] void go;
default jump(){System.out.print("jump");}
[public] default jump(){System.out.print("jump");}
ネストクラス
Non-static InnerClassは、基本的にprivateで、宣言するが、アクセス修飾子をpublic, defaultにする場合は、このようにアクセスすることもできるようだ。
匿名クラスのように、イベント処理でよく使われる。
package oop20230802;
class WebProgram {
String title = "Java Programming";
class Language{
String basic = "Java, HTML, JavaScript";
void disp() {
System.out.println("기초수업: " + basic);
}
}
class Smart{
String basic = "Object-C";
void disp() {
System.out.println("기초수업: " + basic);
}
}
}
public class InnerClassEx1 {
public static void main(String[] args) {
//#inner class
// JS -> jQuery, Ajax (主に、JSとAndroidのイベントに活用する)
WebProgram web= new WebProgram();
System.out.println(web.title);
WebProgram.Language lang = new WebProgram().new Language();
System.out.println(lang.basic);
lang.disp();
WebProgram.Smart sma = new WebProgram().new Smart();
System.out.println(sma.basic);
sma.disp();
}
}
Java Programming
Java, HTML, JavaScript
기초수업: Java, HTML, JavaScript
Object-C
기초수업: Object-C
個人的に意見を言えば、外部に情報を隠し、カプセル化のためにprivateに宣言することが目的だと思うが、.アクセスできるようになることはすこし目的にずれる気もする。
結局、重要なポイントは継承のように、外部クラスのオブジェクトが存在しないかぎり、内部クラスのオブジェクトの生成もできないことだ。
以前、privateに宣言したInner Classの情報もあるため、こちらにURLを添付する。
匿名クラス
特定インタフェースをメインですぐ宣言し、匿名クラスを宣言してから、その場でオーバーライドすることもできる。
主にイベントのようなアンドロイドのUIで活用される。
AnonymousEx1
interface IMessage {
void msgPring();
}
public class AnonymouClassEx1 {
public static void main(String[] args) {
//Anonymousを込めるインタフェース変数を作成
IMessage message = new IMessage() {
@Override
public void msgPring() {
System.out.println("===Anonymous===");
}
};
message.msgPring();
} // main() end
}
===Anonymous===
より詳しい、まとめ情報はこちらから参考できる。
Discussion