[Javaの定義]CHAPTER 6:オブジェクト向けプログラミングI
1.対象言語
新しいコードを作成する場合は、既存のコードを使用して簡単に作成できます.
コード間の関係を利用して、少ないワークロードで簡単にコードを変更することができます.
制御者と方法を使用して、データを保護し、正しい値を維持し、コードの重複を解消し、コードの不一致によるエラー行為を防止することができます.
2.クラスとオブジェクト
オブジェクトとインスタンス
class Tv{
// TV의 속성(멤버변수)
String color; // 색상
boolean power; // 전원상태(on/off)
int channel; // 채널
void power(){power = !power;} // tv를 켜거나 끄는 기능을 하는 메서드
void channelUp(){++channel;} // tv의 채널을 높이는 기능을 하는 메서드
void channelDown(){--channel;} // tv의 채널을 낮추는 기능을 하는 메서드
}
public class TvTest {
public static void main(String args[]){
Tv t1 = new Tv(); // tv 인스턴스를 참조하기 위한 변수 t를 선언하고, 인스턴스 생성한다.
Tv t2 = new Tv();
t1.channel = 7; // tv 인스턴스의 멤버변수 channel의 값을 7로 한다.
t1.channelDown(); // tv 인스턴스의 메서드를 호출한다.
System.out.println("현재 채널은 " + t1.channel + "입니다.");
}
}
カテゴリ
これは、文字列と文字列を処理するために必要な関数を組み合わせるためです.
3.変数と方法
宣言位置による変数タイプ
使用方法の理由
一度作成したメールは何度でも呼び出すことができます.
重複する文をメソッドとして作成すると、変更が発生したときにこのメソッドを変更するだけでコード重複を解消できます.
プロセス全体を一目瞭然にするためには、簡単に構造化することが望ましい.プログラムに問題が発生した場合も、この部分を簡単に見つけて解決することができます.
JVMのメモリ構造
レプリカは、元のレプリカではなく
class Data{
int x;
}
public class PrimitiveParamEx {
public static void main(String args[]) {
Data d = new Data();
d.x = 10;
System.out.println("main() : x = " + d.x);
change(d.x);
System.out.println("After change(d.x)");
System.out.println("main() : x = " + d.x);
}
static void change(int x) {
x = 1000;
System.out.println("change() : x = " + x);
}
}
change() : x = 1000
After change(d.x)
main() : x = 10
class Data{
int x;
}
public class ReferenceParamEx {
public static void main(String[] args) {
Data d = new Data();
d.x = 10;
System.out.println("main() : x = " + d.x);
change(d);
System.out.println("After change(d)");
System.out.println("main() : x = " + d.x);
}
static void change(Data d) {
d.x = 1000;
System.out.println("change() : x = " + d.x);
}
}
main() : x = 10
change() : x = 1000
After change(d)
main() : x = 1000
クラスメソッドとインスタンスメソッド
class MyMath{
long a, b;
long add() { return a + b;}
long subtract() { return a - b;}
static long add(long a, long b) { return a + b;}
static long subtract(long a, long b) { return a - b;}
}
public class MyMathTest {
public static void main(String[] args) {
// 클래스 메서드 호출. 인스턴스 생성없이 호출가능
System.out.println(MyMath.add(200, 201));
System.out.println(MyMath.subtract(200, 201));
MyMath mm = new MyMath();
mm.a = 200;
mm.b = 201;
// 인스턴스 메서드는 객체생성 후에만 호출이 가능함
System.out.println(mm.add());
System.out.println(mm.subtract());
}
}
4.過負荷
かふかじょうけん
可変パラメータとオーバーロード
public class VarArgxEx {
public static void main(String[] args) {
String[] strArr = {"100", "200"};
System.out.println(concatenate("", "100", "200")); // 컴파일에러 발생
System.out.println(concatenate("", strArr));
}
static String concatenate(String delim, String... args) {
String result = "";
for (String str : args) {
result += str + delim;
}
return result;
}
static String concatenate(String... args) {
return concatenate("", args);
}
}
5.ジェネレータ
作成者とは?
インスタンスの作成時に呼び出されるインスタンスの初期化方法.
インスタンスの作成時に実行するアクションにも使用できます.
コンストラクション関数から別のコンストラクション関数を呼び出す-this(),this
クラス名ではなくthisを
6.初期化変数
メンバー変数の初期化方法
インスタンス初期化ブロックは、コンストラクション関数などのインスタンスを作成するたびに実行されます.
インスタンス初期化ブロックは作成者より先に作成されます
クラスが最初にロードされると、クラス変数は自動的にメモリに作成され、クラス初期化ブロックはクラス変数を初期化します.
メンバー変数の初期化時間と順序
Reference
この問題について([Javaの定義]CHAPTER 6:オブジェクト向けプログラミングI), 我々は、より多くの情報をここで見つけました https://velog.io/@haron/자바의-정석-CHAPTER-6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol