Javaはオブジェクト指向プログラミング言語です。クラスとオブジェクトはオブジェクト指向プログラミングの重要な概念です。本質的に、クラスはオブジェクトの属性と動作を定義するオブジェクトのキャリアと見なすことができます。
目次
オブジェクト指向の概要
オブジェクト指向思考は、人間にとって最も自然な考え方であり、すべての前処理の問題をオブジェクトとして抽象化すると同時に、これらのオブジェクトの対応する属性と動作を理解して、これらが直面するいくつかの実際的な問題を解決します。オブジェクト指向設計の本質上記は、実世界のオブジェクトをモデル化することです。
オブジェクト
オブジェクトは、英語で「オブジェクト」と呼ばれる抽象的な概念であり、存在するものすべてを意味します。通常、オブジェクトは静的部分と動的部分の2つの部分に分割されます。静的部分は人の性別などの属性と呼ばれ、動的部分は人が歩くことができるなどのオブジェクトの動作を指します。
クラス
クラスは、オブジェクトのプロパティと動作をカプセル化するキャリアです。逆に、同じプロパティと動作を持つエンティティのクラスは、クラスと呼ばれます。Java言語では、クラスにはオブジェクトの属性と動作が含まれます。クラス内のオブジェクトのプロパティはメンバー変数の形式で定義され、オブジェクトの動作はメソッドの形式で定義されます。
オブジェクト指向プログラミングの特徴
カプセル化
オブジェクトのプロパティと動作をカプセル化します。キャリアはクラスです。クラスは通常、実装の詳細を顧客から隠します。これはカプセル化のアイデアです。たとえば、コンピュータを使用する場合は、指を使ってタップするだけです。コンピュータを知らなくてもいくつかの機能を実現するためのキーボード。インテリアの仕組み。
カプセル化のアイデアは、クラスの内部データ構造の整合性を保証します。このクラスを使用するユーザーは、このデータ構造を簡単に直接操作することはできませんが、クラスが公開できるデータのみを操作できます。これにより、外部操作が内部データに与える影響を回避し、プログラムの保守性を向上させます。
継承
サブクラスのインスタンスはすべてスーパークラスのインスタンスであると言えますが、スーパークラスのインスタンスがサブクラスのインスタンスであるとは言えません。継承は再利用を実現するための重要な手段です。継承を通じて、サブクラスは親クラスのプロパティと動作を再利用し、サブクラスの一意のプロパティと動作を追加します。
ポリモーフィズム
親クラスオブジェクトをサブクラスに適用する特徴はポリモーフィズムです。サブクラスは親クラスの特性を継承しますが、独自の特性を持ち、さまざまな効果を実現できます。これがポリモーフィズムの構造です。
クラスとオブジェクト
メンバー変数
Javaのオブジェクトのプロパティはメンバー変数とも呼ばれ、メンバー変数の定義は通常の変数の定義と同じです。
数据类型 变量名称 [= 值];
定義された変数には、値を割り当てるかどうかを指定できます。初期値が設定されていない場合、デフォルト値があります。
public class Test30 {
// 实例成员变量
private boolean bool;
private byte b;
private short s;
private char c;
private int i;
private long l;
private float f;
private double d;
private String str;
private String[] strArray;
public void printInstance() {
System.out.println("实例成员变量默认值:");
System.out.println("boolean:" + bool);
System.out.println("byte:" + b);
System.out.println("short:" + s);
System.out.println("int:" + i);
System.out.println("long:" + l);
System.out.println("float:" + f);
System.out.println("double:" + d);
System.out.println("String:" + str);
System.out.println("String[]:" + strArray);
System.out.println("char:" + c);
}
public static void main(String[] args) {
Test30 dv = new Test30();
dv.printInstance();
}
}
実行結果:
メンバー方式
memberメソッドは、クラスオブジェクトの動作に対応し、主にクラスが実行できる操作を定義するために使用されます。
权限修饰符 返回值类型 方法名 (参数类型 参数名){
return 返回值;
}
メソッドの定義時にアクセス許可修飾子が指定されていない場合、メソッドのデフォルトのアクセス許可がデフォルトになります(つまり、このクラスと同じパッケージ内のクラスでのみアクセスできます)
メンバーメソッドのパラメーター
メソッドを呼び出すときに、1つ以上の値をメソッドに渡すことができます。メソッドに渡された値は実際のパラメーターと呼ばれ、メソッド内の実際のパラメーターを受け入れる変数は仮パラメーターと呼ばれます。仮パラメーターはメソッド内でのみ有効です。Javaのメソッドパラメーターには、値パラメーター、参照パラメーター、可変長パラメーターの3つの主要なタイプがあります。
メンバーメソッドは静的ではありませんが、テストの目的で、すべてのメソッドは静的です。
値パラメーター
値パラメータテーブル名は、実際には仮パラメータ間の値による転送に関与します。値パラメータを使用するメソッドが呼び出されると、コンパイラは仮パラメータにストレージユニットを割り当て、対応する実際のパラメータの値をにコピーします。仮パラメータ。値型の転送。メソッド内の値型の仮パラメータを変更しても、実際のパラメータには影響しません。
参照パラメーター
パラメータをメソッドに渡すときにパラメータタイプが配列またはその他の参照型である場合、メソッド内の仮パラメータの変更は、元の配列またはその他の参照型に反映されます。このタイプのメソッドパラメータは参照パラメータと呼ばれます。 。
可変長パラメーター
メソッドを宣言するときに、同じタイプのパラメーターが複数ある場合、それらは不定長パラメーターとして定義できます。パラメータタイプとパラメータ名の間には3つのドットがあり、他の数量や省略記号はありません。
工法
クラスのメンバーメソッドに加えて、特別なタイプのメソッド、つまり構築メソッドもあります。構築メソッドはクラスと同じ名前のメソッドであり、オブジェクトの作成は構築メソッドを介して行われます。オブジェクトがインスタンス化されるたびに、クラスは自動的にコンストラクターを呼び出します。
工法の特徴は次のとおりです。
工法には戻り値の型がなく、無効と定義することはできません。
コンストラクターの名前は、このクラスの名前と同じである必要があります。
構築メソッドの主な機能は、オブジェクトの初期化を完了することです。オブジェクトを定義するパラメーターをオブジェクトメンバーに渡すことができます。
構文は次のとおりです。
class Book {
public Book() {
}
}
コンストラクターがクラスで明確に定義されていない場合、コンパイラーはパラメーターなしでデフォルトのコンストラクターを自動的に作成します。クラスにすべてのパラメーター構築メソッドがある場合、コンパイラーはクラスのデフォルトのパラメーターなし構築メソッドを自動的に生成しません。
ローカル変数
メンバーメソッドで変数を定義する場合、この変数はローカル変数と呼ばれます。
ローカル変数は、メソッドの実行時に作成され、メソッドの最後に破棄されます。ローカル変数は、使用時に割り当てるか初期化する必要があります。そうしないと、コンパイルエラーが発生します。
クラスメンバー変数とメンバーメソッドは、まとめてクラスメンバーと呼ぶことができます。メソッドにメンバー変数と同じ名前のローカル変数が含まれている場合、メソッド内のこの変数へのアクセスは、ローカル変数の値に基づいています。
同じ名前とタイプのローカル変数は、互いにネストされていない領域で定義できます。
このキーワード
ローカル変数と同じ名前のパラメーターがメソッドに含まれている場合、メソッドはメンバー変数を直接使用できません。
Java言語では、thisキーワードはこのクラスのオブジェクトの参照を表すために使用され、thisキーワードはオブジェクトのメンバー変数とメソッドを参照するために暗黙的に使用されることが規定されています。
メンバー変数またはメンバーメソッドの呼び出しに加えて、thisキーワードをメソッドの戻り値として使用することもできます。
これにより、クラスのメンバー変数とメンバーメソッドを呼び出すことができるだけでなく、クラスのコンストラクターを呼び出すこともできます。
静的キーワード
staticによって変更された変数、定数、およびメソッドは、それぞれ静的変数、静的定数、および静的メソッドと呼ばれ、クラスの静的メンバーとも呼ばれます。
静的キーワード
Javaプログラムでは、共有変数がstaticで装飾されている場合、その変数は静的変数です。
静的変数を呼び出すための構文は次のとおりです。
类名.静态类成员
静的メソッド
クラスのメンバーメソッドを使用する場合は、最初にクラスをインスタンス化する必要がありますが、クラスのオブジェクトを作成したくない、または作成できない場合は、クラスのメソッドを呼び出してビジネスロジックを完了する必要があります。 。この場合、静的メソッドを使用できます。
呼び出し元クラスの静的メソッド構文は次のとおりです。
类名.静态方法();
静的コードブロック
クラスのメンバーメソッドに加えて、staticで装飾されたコード領域はstaticコードブロックと呼ぶことができます。クラスの初期化を完了するための静的コードブロックを定義します。これは、クラスが宣言されたときに実行されます。
public class StaticTest {
static {
// 此处编辑执行代码
}
}
静的と同様に、面接筆記試験がよく表示されます
クラスのメインメソッド
mainメソッドはクラスのエントリポイントであり、プログラムの開始場所を指定し、プログラムのフローを制御します。Javaコンパイラは、valueメソッドを介してプログラムを実行します。
主なメソッド構文は次のとおりです。
public static void main(String args[]){
}
mainメソッドは静的であるため、mainメソッドで他のメソッドを直接呼び出す場合は、静的メソッドである必要があります。
mainメソッドには戻り値がありません
。mainメソッドの仮パラメーターは配列です。ここで、arg [0] -args [n]はそれぞれ、プログラムのn +1番目のパラメーターの最初のパラメーターを表します。
難しさ
ローカル変数とグローバル変数
実際、すべての変数はローカル変数ですが、非静的グローバル変数や静的変数など、変数の有効スコープに基づいて異なる方法で呼び出されます。非静的グローバル変数の有効なスコープはクラス本体全体であり、これらのグローバル変数はクラスが破棄されると同時に破棄されます。静的変数のスコープはプログラム全体のライフサイクルであり、静的変数はプログラムの終了後にのみ破棄されます。