私が大学にいたとき、OOP(オブジェクト指向プログラミング)を理解するのは非常に困難でしたが、今では私たちは単に明確で正確なアナロジーを使用してOOPを教えられていないことを理解しています。 。
OOPの古典的なアナロジーを思い出してください。ここでは、「声」と「食事」のメソッドを持つペットクラスがあり、そこから猫と犬を継承します。
しかし、その後、光が来て、話をしない水族館の魚をもたらし、次にヴァシャが来て、彼の愛するサボテンをもたらします。
すでに混乱していますが、Vovochkaは次のように尋ねています。「この動物園の静的メソッド、インターフェイス、抽象クラスはどこにあり、クラスオブジェクトはクラス自体とどう違うのですか?」 もちろん、説明は可能ですが、難しいです。 理解するのはさらに難しいです
または、もう1つの古典的な例は、正方形を継承したい長方形です(論理的には、正方形は長方形の特殊なケースです)が、長方形には長さと幅があり、正方形には片側しかありません。 ここでも何か混乱しています。
では、OOPをよりよく説明する方法について考えてみましょう。
オブジェクト指向プログラミングは、実世界のオブジェクトの記述(より正確には、実世界の記述だけでなく)ではなく、あらゆる種類の工学局、建築設計者、設備設計者などの設計手法(あらゆる種類のコンピューターの外観)から登場しました。

したがって、この会社で航空機を製造する会社と設計局を想像してください(たとえば、ボーイング)。 軍用機、貨物、乗客のいくつかのモデルを注文しました。
最初に行うことは、すべてのモデルの一般的な描画を開始することです。 この図によれば、実際の航空機を作ることはまだ不可能ですが、一般的な実装の詳細がすでに含まれています。 これは
抽象クラスです。Javaコードpublic abstract class { // ;
public abstract void ();
public void () {
//
}
public abstract void ();
}
, , , , ( , ), , , .
.
Javapublic interface { //
long get();
double get();
long get();
void ();
void ();
void ();
}
public abstract class implements {
...
, , , , (/)
.
Javapublic abstract class { // ;
public abstract void (); //
public void () {
//
}
public abstract void (); //
}
, . . , , . , , .
.
Javapublic class extends {
public int get() {
return 120;
}
public void () {
__();
_();
___();
():
}
...
}
public class extends {
public int get() {
return 5;
}
public void () {
_();
_();
():
}
...
}
() . , , , .
() .

, , . .
.
2 , , (, ) , ( , ).
.
Javapublic class extends {
...
public void () {
_();
___();
___();
():
}
...
}
public class extends {
public void () {
_();
_();
():
}
...
}
, , ( ), « - ».
.
Javapublic class extends {
private = new 45()
...
}
, (, , ), .
.
120 , - 130 ( ), , . , - 120 , 130 , , , .
.
Javapublic class 130 extends {
@Override
public int get() {
return 130;
}
...
}
?, , . , . , - (, , ), - () .
, , , . . .
( ), , , , - (, , , ), , . — . — ..
!
P.S. (,
Java SE)