[白奇仙ジャワ学習]6週間-継承
1.Java継承の特徴
継承とは、親クラスで定義されたフィールドとメソッドを継承し、子クラスでも使用できるようにすることです.
親は親(スーパークラス、Superクラス)またはベース(ベースクラス、Baseクラス)と呼ばれ、継承された子は子(サブクラス、Subクラス)または派生クラス(誘導閉パッケージ、派生クラス)と呼ばれます.
1.1特性
1.2使用理由
Java言語から継承されるのは、既存のクラスのメソッドとフィールドを再利用できるためです.
つまり、新しいクラスを作成し、実装したいコードが他のクラスにすでに存在している場合は、再記述することなく、クラス継承によって作成したコードを再利用できます.
2.スーパーキー
スーパーキーを使用すると、サブクラスはスーパークラスにアクセスできます.superはスーパークラスの参照変数と見なすことができる.
親のデフォルトの作成者を呼び出す役割(子作成者の最初の行にある必要があります)
サブオブジェクトを作成する場合、Javaはまず親オブジェクトを作成し、次にサブオブジェクトの構造を作成します.
public class CellPhone { . . . }
public class IPhone extends CellPhone { . . . }
IPhone iPhone = new IPhone();
public IPhone() {
super();
}
3.メソッドオーバーフロー
これは、superClassが持つメソッドをサブクラスから新しい異なる論理として定義する場合に使用する構文です.
継承関係のクラス間で同じ名前のメソッドを定義する構文を上書きと呼びます.
3.1特性
4.動的方法の派遣
dispatchは、どのメソッドを呼び出すかを決定することによってそのプロセスを実行する.
すなわち、実行可能な方法が複数ある場合、受信したメッセージに基づいてどの方法を実行するかを決定することを意味する.
4.1静的方法の派遣
public class App {
public static void main(String[] args) {
AppService appService = new AppService();
appService.run();
appService.run(2);
}
}
class AppService {
void run() {
System.out.println("run 호출");
}
void run(int num) {
System.out.println("run" + num + "번 호출");
}
}
これは静的時間(static)でどのメソッドを呼び出すかを決定するプロセスである.(コンパイル時)メソッドを上書きまたは上書きする場合も、コンパイル時に決定されます.
4.2動的アプローチの派遣
public class App {
public static void main(String[] args) {
AppService appService = new subAppService();
appService.run();
AppService appService2 = new subAppService2();
appService2.run();
}
}
abstract class AppService {
abstract void run();
}
class subAppService extends AppService {
@Override void run() {
System.out.println("sub1");
}
}
class subAppService2 extends AppService {
@Override void run() {
System.out.println("sub2");
}
}
ダイナミックタイミング(Dynamic)で呼び出す必要があるメソッドのプロシージャ.
すなわち,実行時にどのメソッドを呼び出すかを決定するプロセスである.
インタフェースまたは抽象クラスを宣言し、インタフェースを実装し、抽象クラスを継承するサブクラス.
インスタンスとして作成時に発生します.
4.3ダブルパッチ-トビーの春のテレビ整理
instance ofは使用しません.
ダイナミックディスパッチを2回行う方法です.
パラメータはダイナミックディスパッチの条件ではありません.
Javaは単一のDispatch言語です.(受信機1個)
interface Post{
void postOn(SNS sns);
}
static class Text implements Post{
public void postOn(SNS sns){
sns.post(this);
}
}
static class Picture implements Post{
public void postOn(SNS sns){
sns.post(this);
}
}
interface SNS{
void post(Text post);
void post(Picture post);
}
static class Facebook implements SNS{
public void post(Text post){
System.out.println("text -> facebook");
}
public void post(Picture post){
System.out.println("picture -> facebook");
}
}
static class Twitter implements SNS{
public void post(Text post){
System.out.println("text -> twitter");
}
public void post(Picture post){
System.out.println("picture -> twitter");
}
}
static class GooglePlus implements SNS{
public void post(Text post){
System.out.println("text -> gplus");
}
public void post(Picture post){
System.out.println("picture -> gplus");
}
}
public static void main(String[] args){
List<Post> posts = Arrays.asList(new Text(), new Picture());
List<SNS> sns = Arrays.asList(new Facebook(), new Twitter(), new GooglePlus());
posts.forEach(p->sns.forEach(s.postOn(s))); }
}
5.抽象クラス
6.finalキーワード
7.対象クラス
リファレンス
7.対象クラス
リファレンス
Reference
この問題について([白奇仙ジャワ学習]6週間-継承), 我々は、より多くの情報をここで見つけました https://velog.io/@cham/백기선님자바스터디-6주차-상속テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol