Java基本機能の強化-オブジェクト向けO.O!
O.O.P! オブジェクト向けプログラミング!
現実の世界である製品を製造するとき、部品を先に開発し、それらを一つ一つ組み立ててて完成させた製品のように、ソフトウェアを開発する際にも、まず部品に対応するオブジェクトを作成し、これらのオブジェクトを一つ一つ組み立ててててて完成させたプログラムを作成する方法を、イメージング向けプログラミング(OOP:ObjectOriented Programming)と呼ぶ.
1.コードの再利用性が高い.
新しいコードを作成する場合は、既存のコードを使用して簡単に作成できます.
2.コード管理が便利です.
コード間の関係を利用して、少ないワークロードで簡単にコードを変更することができます.
3.高信頼性プログラミングを可能にする.
制御者と方法を使用して、データを保護し、正しい値を維持し、コードの重複を解消し、コードの不一致によるエラー行為を防止することができます.
対象とは?
オブジェクト向けプログラミングでは、基本実行ストリームまたはデータユニットの情報として、属性(フィールド、変数)と機能(方法)から構成される.インスタンスとオブジェクトもオブジェクトと同じです.単純にクラスをメモリ(new)に割り当てる場合をオブジェクトと呼ぶ.
カテゴリ
クラスは、オブジェクトを作成する前にJavaソース(*.java)内部コードでオブジェクトの設計図(定義)を作成します.
クラスの構成
クラス構成コードの説明
class ClassTest {
// field
static int staticValue; // 1. 클래스 변수
int instanceValue; // 2. 인스턴스 변수
// 3. 클래스 초기화 블럭
static {
staticValue = 0;
}
// 4. 인스턴스 초기화 블럭
{
instanceValue = 0
}
// 5. 생성자
public ClassTest(int instanceValue) {
this.instanceValue = instanceValue;
}
// 6. 클래스 메서드
public static void staticMethod() {
...
}
// 7. 인스턴스 메서드
public void instanceMethod() {
...
}
// 내부 클래스
class InnerClass {
}
}
上記の例は、クラスコンポーネントを作成するコードであり、内部クラスを除く各要素の作成時間を順に示すと、まずクラスを作成する移行順序は1->6->3
である.ClassTest
クラスがオブジェクトとして作成された場合// ClassTest 객체 생성
ClassTest ct = new ClassTest(1);
クラス生成後の順序は2->7->4->5
である.メンバー変数の初期化方法
1.明示的初期化(明示的初期化)
2.初期化ブロック
3.コンストラクション関数(コンストラクション関数)
シーケンスは1、2、3で、明示的な初期化後、初期化ブロックは再初期化され、最後に作成者がオブジェクトを作成するときに初期化されます.明示的な初期化は、変数宣言後すぐに値を割り当てます.
ex) int value = 0;
作成者の使用方法
各クラスは、1つ以上のコンストラクション関数を定義する必要があります.コンストラクション関数が表示されない場合は、コンパイラが提供するデフォルトのコンストラクション関数です.(デフォルトのコンストラクタは、クラスにコンストラクタが定義されていない場合にのみ追加されます.)
デフォルト作成者
class People {
String name;
int age;
}
People p = new People();
上記の例でPeopleオブジェクトを作成すると、Peopleクラスはデフォルトジェネレータを呼び出します.現在ジェネレータが定義されていないためです.パラメータ付き作成者
class People {
String name;
int age;
People (String n) {
name = n;
}
}
People p = new People("홍길동");
上記の例は、Peopleオブジェクトの作成時に「洪吉童」というジェネレータを呼び出してnameを初期化する例です.this()、thisキーワード
このキーワードは、クラス内で自分(生成されたオブジェクト)にアクセスするために使用します.上のPeopleクラスでは、これ.nameは、現在生成されているオブジェクトのnameを表します.
ジェネレータを呼び出すときに、「パラメータ」(argments)の値をPeopleクラスのインスタンス変数と同じ名前のnameとして使用すると、「エラー」と混同されます.
class People {
String name;
int age;
People (String name) {
this.name = name;
}
}
People p = new People("홍길동");
また、クラス内でオブジェクトの作成者として使用できます.class People {
String name;
int age;
People () {
}
People (String name) {
this(name, "20");
}
People (String name, int age) {
this.name = name;
this.age = age;
}
}
People p = new People("홍길동");
People p = new People("홍길동", "21");
上記の例では、異なるコンストラクション関数を呼び出し、このキーワードでより使いやすいと判断できます.静的キー
クラス変数
クラス変数は、プログラムの実行時にメモリに割り当てられているため、オブジェクトを作成することなくクラスからアクセスできます.
class StaticTest {
static int value;
public static void testStaticMethod() {
...
}
}
...
public static void main(String[] args) {
// StaticTest 클래스를 생성하지 않아도 사용이 가능
StaticTest.value = 7;
StaticTest.testStaticMethod();
}
クラス(静的)メソッドの注意事項
上述したように、静的キーワードを含む関数または変数、および後続のプロシージャのクラスは、mainメソッドが操作を開始する前に、クラスがプログラムドライバをロードするときにメモリに最初に割り当てられる情報である.
したがって、静的メソッドのブロックではインスタンス変数にアクセスできません.以下の例をさらに説明する.
class StaticTest {
int value = 0;
public static void testStaticMethod() { // 스태틱 메서드
value = 1; // 인스턴스 변수 -> 컴파일 에러 발생!
}
}
上記の例では、コンパイラが静的メソッドからインスタンス変数にアクセスするとエラーが発生することがわかります.mainメソッドを呼び出す前にメモリに割り当てられ、インスタンス変数はクラスがオブジェクトとしてメモリに割り当てられたときにメモリに割り当てられるため、staticキーワードを宣言した変数または関数がメモリに割り当てられて実行されると、インスタンス変数がメモリに割り当てられず、問題が発生します.(インスタンスメソッドも静的メソッドから呼び出すことはできません.)メソッドでstaticキーワードを宣言すると、メソッドを検索するプロセスがインスタンスメソッドよりも短いため、メソッド呼び出し時間が短縮され、パフォーマンスが向上します.
内容を整理する
この文章はJava言語の基礎を築くために書かれたものです.
この文書のエラーまたは追加する必要がある内容は次のとおりです[email protected]分かち合えばありがたいです
この記事を参照または転載する場合は、ソースをリンクしてください:)
リファレンス
1. 白旗仙-ジャバステディ
2.これがJava-信用圏を征服するJavaプログラミング
3.Javaの定式書3 rd Edition
Reference
この問題について(Java基本機能の強化-オブジェクト向けO.O!), 我々は、より多くの情報をここで見つけました
https://velog.io/@host92/자바-기본기-다지기-객체-지향-O.O
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(Java基本機能の強化-オブジェクト向けO.O!), 我々は、より多くの情報をここで見つけました https://velog.io/@host92/자바-기본기-다지기-객체-지향-O.Oテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol