記事のディレクトリ
1.オブジェクト指向プログラミングとは何ですか
OOP(オブジェクト指向プログラミングは、それほど頻繁に呼ばれるOOP)は、Javaに固有のものではなく、プログラミングのアイデアは、Javaの、C ++は、Pythonはその実現を持っています。その本質は、抽象的思考プロセスのモデルと確立するために、オブジェクト指向のアプローチに反映されています。モデルは、現実の世界で物事の特性を反映するために使用され、すべてのモデルは、すべての目的の物事の特定の特性、抽象ものと様々なルールを反映していないことができ、より一般的にはそれがカバーする範囲で、より多くの焦点を当て、オブジェクトの特徴をより深く説明。抽象を達成するためのモデルを確立することにより、物体の人々の理解を深めることです。
2、OOPの利点と欠点
長所:簡単に維持し、高いコードの再利用を拡大します。オブジェクト指向のカプセル化、継承、多型特性があるので、システムは、システムがより柔軟になって、低いカップリングを設計することができます。
欠点:大型のCPUのオーバーヘッド、より多くのリソースを占有
図3に示すように、三つの特徴
パッケージ:隠されたオブジェクトのプロパティと実装の詳細、外部インタフェースの一部のみを保持し、
継承:サブクラスは、親クラスの属性およびメソッドを継承し、
多型:機能または同じ挙動の異なる形式の形の複数の。
3.1、パッケージ
この外装缶のみのアクセスを、保護された::デフォルト(既定のアクセス許可を);専用アクセスこのクラスすることができます。アクセス修飾子は、プライベートを含め、プロパティとメソッドの制御を達成するために使用し、連続してサブクラスパケットにのみアクセスすることができます;公共:アクセス可能。私たちは、そのオブジェクトのクラスを定義し、通常は隠し属性、共通セットを提供し、アクセスメソッドを取得します。
/**
* @author RuiMing Lin
* @date 2020-03-05 16:01
*/
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() { return age; }
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
3.2、継承
継承は、コードの再利用が減少し、親クラスのすべての非プライベートサブクラスの属性とメソッドにアクセスすることができます。継承は、オブジェクト階層を作るより明確に入力することができます。
/**
* @author RuiMing Lin
* @date 2020-03-05 18:18
*/
public class Demo {
public static void main(String[] args) {
Son s = new Son("小明",23);
s.eat(); //从父类继承的方法
s.sleep(); //重新父类的方法
s.study(); //子类自己定义的方法
}
}
class Father{
String name;
int age;
public Father(String name, int age) {
this.name = name;
this.age = age;
}
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("父亲睡觉");
}
}
class Son extends Father{
public Son(String name, int age) {
super(name, age);
}
@Override
public void sleep(){
System.out.println("儿子睡觉");
}
public void study(){
System.out.println("儿子学习");
}
}
3.3、多型
public abstract class Animal {
public abstract void eat();
}
class Cat extends Animal {
public void eat() {
System.out.println("吃鱼");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("吃骨头");
}
}
public class Test {
public static void main(String[] args) {
// 多态形式,创建对象
Cat c = new Cat();
Dog d = new Dog();
// 调用showCatEat
showCatEat(c);
// 调用showDogEat
showDogEat(d);
showAnimalEat(c);
showAnimalEat(d);
}
public static void showCatEat (Cat c){
c.eat();
}
public static void showDogEat (Dog d){
d.eat();
}
public static void showAnimalEat (Animal a){
a.eat();
}
}
サポート多型、メソッドの動物showAnimalEat型の特性は、犬及び猫が親クラスタイプ、親受信サブクラスオブジェクトのタイプであり、オブジェクトは、メソッドに猫と犬オブジェクトを渡すことができます。多型を所定の方法で実行し、食べるとき、サブクラスはメソッドをオーバーライド自然showCatEatの効果と一致し、その後、行われ、showDogEat方法は、次の2つのメソッドの上showAnimalEatを置き換えることができます。ただ代替は、スケーラビリティの面で、より多くのサブカテゴリーが表示された後、我々はshowXxxEatメソッドを記述する必要はありませんか、showAnimalEatの直接の使用を行うことができません。そのため、プログラムに具現多状態の利点は、単純で、かつ優れた拡張に書き込むことができます。
3.3.1、マルチステート動作ルール
コンパイル親(親インターフェース)法や独自のクラス場合、エラーはIDEを使用しない、特定のタイプ、クラス、またはもしメソッドのクラスの動作を参照して、エラーがIDEを使用しません。
- メンバー変数:コンパイルルック左、ランの左側を見て。
- 静的メソッド:コンパイルルックは、ランの左側を見て左。
- 非静的メソッド:コンパイルルックは、実行の外観を右に左に。
4、要約
プロセス指向プログラミング、その使用およびより厳格な仕様と異なるオブジェクト指向プログラミングのアイデア。Javaオブジェクト指向プログラミングは、より多くの標準化され、多くは、それをよりよく理解するJavaの必要性のより詳細な研究があります。
間違った場所を記入してください!あなたが賞賛を与えることができれば、それはトラブルにあったと思いました!私たちは、コメント欄やプライベートの手紙の交換を歓迎します!