[Day16] Java 16 - μ€λ²λ‘λ©, getter setter, μμ±μ, μ΄κΈ°ν, static
[Day16] Java 16 [8/30]
1. κ°λ³μΈμ(varagrgs)μ μ€λ²λ‘λ©
- variable(λ³μ) + arguments(μΈμ, νλΌλ―Έν°, 맀κ°λ³μ, μΈμ)
- κ°λ³μΈμ ‘…’
public static int add (int … m) { // integer λ°°μ΄ mκ³Ό λμΌ
-> μΈμκ°λͺκ°λ λ€ μ²λ¦¬κ°λ₯, μ€λ²λ‘λ© ν νμ μμ΄ λ§€κ°λ³μ λͺκ°κ° λ μ§ λͺ¨λ₯Έλ€λ©΄ κ°λ³μΈμ μ¬μ©νλ©΄λ¨
String concatenate(String s1, String s2) {}
String concatenate(String s1, String s2, String s3) {}
String concatenate(String s1, String s2, String s3, String s4) {}
String concatenate(String... str) {}
2. getter setter
[ private λ‘ μ μΈλ νλλ₯Ό μ κ·Όνλ λ°©λ² ? ] (private int x, y)
-> getter, setter λ©μλ
1.
- getter λ§ μ μΈ - private x μ½κΈ° κ°λ₯, μ°κΈ° X
- setter λ§ μ μΈ - μ½κΈ° X, μ°κΈ° O
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
2. μ ν¨μ± κ²μ¬ ν μ ν¨ν κ°λ§μ ν λΉνκ³ μ ν λ -> setter ν΅ν΄μ μ²λ¦¬
public int getY() {
return y;
}
// ***** this ν€μλ ****
public void setY(int b) {
if( b >= 0 && b <= 100) y = b;
else System.out.println("y μ’νκ°μ λ²μκ° λ²μ΄λ¬λ€.");
}
3. μμ±μ (constructor)
1. λ©μλ
2. λ°λμ μμ±μμ΄λ¦ == ν΄λμ€ μ΄λ¦
3. 리ν΄μλ£νμ λΆμ΄μ§ μλλ€. void X
4. μμ±μ νΈμΆ μκΈ° ? μΈμμ μΌλ‘ νΈμΆν μ μμ΄μ. -> μΈμ νΈμΆ ? κ°μ²΄κ° μμ±λ λ μλμΌλ‘ νΈμΆλλ€.
5. μμ±μ μν ? κ°μ²΄μ νλλ₯Ό μ΄κΈ°ννλ μν
6. μ κ·Όμ§μ μ 4κ°μ§ μ¬μ©ν μ μλ€. + μμ±μ
7. " μΈμ€ν΄μ€ μ΄κΈ°ν λ©μλ " λΌκ³ λ νλ€.
8. μ€λ²λ‘λ© κ°λ₯
9. 맀κ°λ³μ μλ μμ±μλ₯Ό "λν΄νΈμμ±μ"λΌκ³ λΆλ₯Έλ€.
10. μμ±μλ μμλμ§ μλλ€.
11. ν΄λμ€μ μ μΈλ μμ±μκ° νλλ μλ κ²½μ° μ»΄νμΌ ν λ μλμΌλ‘ λν΄νΈ μμ±μλ₯Ό μΆκ°νλ€.
public MyPoint( ) {
// νλ μ΄κΈ°ν μν
x = y = 100;
}
public MyPoint(int i) {
// νλ μ΄κΈ°ν νλ μ©λλ‘ λ§€κ°λ³μκ° μ¬μ©λλ€.
x = y = i;
}
// μμ±μ μ μΈ
public MyPoint(int a, int b) {
// νλ μ΄κΈ°ν μν
x = a;
y = b;
}
public MyPoint(MyPoint p1) {
x = p1.x;
y = p1.y;
}
4. this
1) μ μ ? μ°Έμ‘°λ³μ == μ μ₯κ³΅κ° -> ν΄λμ€ μκΈ° μμ μ μ£Όμκ°μ κ°λ μ°Έμ‘°λ³μ.
2) μ¬μ©μ μ μ₯κ³΅κ° μμ± = κ° ν λΉ X
3) this 3κ°μ§ μ©λ
- μΈμ€ν΄μ€(ν΄λμ€ μκΈ°μμ )μ λ©€λ²λ₯Ό κ°λ¦¬ν¬λμ this
- μμ±μμμ λ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λμ this μ©λ
- λ¨λ μΌλ‘ μ¬μ©λ λμ this μ©λ – 리ν΄κ°, 맀κ°λ³μ
class Car{
// νλ
private String color; // μμ
private String gearType; // λ³μκΈ° μ’
λ₯ - μλ, μλ
private int door; // μ°¨λ¬Έ
// getter, setter μ μΈ Alt + Shift + S
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color; // thisμ 첫 λ²μ§Έ μ©λ
}
public String getGearType() {
return gearType;
}
public void setGearType(String gearType) {
this.gearType = gearType; // thisμ 첫 λ²μ§Έ μ©λ
}
// λν΄νΈ μμ±μ
public Car() {
this("ν°μ","μλ", 4);
System.out.println("> Car λν΄νΈ μμ±μ νΈμΆλ¨.");
}
// μμ±μ + 2κ°
public Car(String color, String gearType) {
this(color, gearType, 4); // λ λ€λ₯Έ μμ±μλ₯Ό νΈμΆνλ λ λ²μ§Έ μ©λ
// The assignment to variable color has no effect
// Car ν΄λμ€μ νλ color
// this.color= color; // thisμ 첫 λ²μ§Έ μ©λ
// this.gearType = gearType;
System.out.println("> Car + 2 μμ±μ νΈμΆλ¨.");
// this.νλ, λ©μλ μ¬μ©
// ν΄λμ€ μκΈ° μμ μ λ©€λ²λ€μ΄ this. 보μΈλ€.
// this.toString()
}
public Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
System.out.println("> Car + 3 μμ±μ νΈμΆλ¨.");
}
// λ©μλ
// mycar.dispCar();
public void dispCar() {
System.out.printf("> color:%s, gearType:%s \n", this.color, this.gearType);
}
// μ°¨λμ μμμ λ³κ²½νλ λ©μλ
// [μ°Έμ‘°νμ΄ λ°ννμ
]
// mycar.chageColor("λ
Έλ");
// changeColor() λ©μλλ₯Ό νΈμΆν κ°μ²΄ : mycar
public Car changeColor( String color) {
this.color = color;
return this; // mycar μ°Έμ‘°λ³μ 0x100 μ£Όμ, thisμ μΈ λ²μ§Έ μ©λ
}
} // class
- alt shift s = μλμΌλ‘ μμ±μ 3κ°μ§λ¦¬ λ§λ€μ΄μ§
- return this = μ΄ λ©μλλ₯Ό νΈμΆν μκΈ°μμ κ°μ²΄λ₯Ό λ°ννκΈ° λλ¬Έμ κ·Έ κ°μλ€κ° λ λ©μλλ₯Ό νΈμΆν΄μ λ©μλ μ²΄μΈ κ°λ₯
λ©μλ 체μ΄λ? : https://advenoh.tistory.com/4
5. μ μ΄μ( modifier ) - static
- ν΄λμ€, λ³μ λλ λ©μλμ μ μΈλΆμ ν¨κ» μ¬μ©λμ΄ λΆκ°μ μΈ μλ―Έλ₯Ό λΆμ¬νλ€.
- μ μ§( 4 ) + κΈ°μ : [static], final, abstract, native, transient, synchronized, volatile, strictfp
static λ©μλ
-> rateλ λ©λͺ¨λ¦¬μ νλ‘κ·Έλ¨ μμκ³Ό λμμ μ¬λΌκ°μμ§λ§ ν΄λμ€λͺ .ν΄λμ€μ΄λ¦ ν΄λ μλμ΄
------> λ©λͺ¨λ¦¬μ μ¬λΌκ°μμ§ μμκ² μλλΌ μ κ·Ό μ§μ μλλ¬Έμ μ κ·Όμ λͺ»νλκ²
-> μμ± μν΄λ νλ‘κ·Έλ¨ μμλ§ν΄λ λ©λͺ¨λ¦¬μ μ¬λΌκ°
-> νλ‘κ·Έλ¨ μμκ³Ό λμμ λ©λͺ¨λ¦¬μ μ¬λΌκ°λ static λ©μλμ this μ μ μ μμ
------> thisλ μΈμ€ν΄μ€ μμ±ν΄μΌ μ£Όμκ° μ°Έμ‘°νλ λ³μμ΄κΈ° λλ¬Έ
-> static ν΄λμ€λ³μ μ μΈνλ μ΄μ
-------> λͺ¨λ κ°μ²΄(μΈμ€ν΄μ€)μμ 곡μ ν΄μ μ¬μ©νλ λ³μκ° νμν λ static λ³μ μ μΈ
-> static λ©μλ = μ μ λ©μλ μ μΈνλ μ΄μ
--------> μΈμ€ν΄μ€ μμ± νμμμ΄ ν΄λμ€λͺ μΌλ‘ μ¬μ©νκΈ° μν΄μ μμ£Ό μ¬μ©νλ κΈ°λ₯(λ©μλ) μλ€λ©΄ static λ©μλλ‘ μ μΈ
6. νλ μ΄κΈ°ν
[ νλ μ΄κΈ°ν 3κ°μ§ λ°©λ² ]
1) λͺ μμ μ΄κΈ°ν( explicit initialization ) :
- νλλ₯Ό μ μΈκ³Ό λμμ μ΄κΈ°ννλ κ²μ "λͺ μμ μ΄κΈ°ν"λΌκ³ νλ€.
- νλλ₯Ό μ΄κΈ°ννμ§ μμΌλ©΄ κ° νμ μ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°νλ¨
String name = "λ―Έμ";
int age = 20;
static double rate = 0.04;
int count; // λͺ
μμ μ΄κΈ°ν x, κΈ°λ³Έκ°
int serialNo; // λͺ
μμ μ΄κΈ°ν x, κΈ°λ³Έκ°
2) μμ±μ( constructor )
// constructor
Person(){
//count++;
//serialNo = count;
System.out.println("> Person λν΄νΈ μμ±μ νΈμΆ.");
}
Person(String name, int age, double rate){
//count++;
//serialNo = count;
this.name = name;
this.age = age;
Person.rate = rate;
System.out.println("> Person 3 μμ±μ νΈμΆ.");
}
3) μ΄κΈ°ν λΈλ( initialization block ) γ £ 볡μ‘ν μ΄κΈ°ν μμ μ ν λ μ¬μ©. λͺ¨λ μμ±μμμ 곡ν΅μΌλ‘ μννλ λ¬Έμ₯μ μ΄κΈ°ν λΈλ.
- μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ : μΈμ€ν΄μ€λ³μ μ΄κΈ°ν
- ν΄λμ€ μ΄κΈ°ν λΈλ : ν΄λμ€ λ³μ μ΄κΈ°ν.
{
// μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ
// μΈμ€ν΄μ€(κ°μ²΄)κ° μμ±λ λ λ§λ€ μ€ν
count++;
serialNo = count;
System.out.println("> μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ.");
}
static {
// ν΄λμ€λ³μ μ΄κΈ°ν λΈλ
// 첫 λ²μ§Έ μΈμ€ν΄μ€ μμ±λ λ 1λ² μ€ν
rate = 0.08;
System.out.println("> ν΄λμ€ λ³μ μ΄κΈ°ν λΈλ.");
}
p.304
- μΈμ€ν΄μ€ λ³μ μ΄κΈ°ν μμ : κΈ°λ³Έκ° -> λͺ μμ μ΄κΈ°ν -> μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ -> μμ±μ
- ν΄λμ€ λ³μ μ΄κΈ°ν μμ : κΈ°λ³Έκ° -> λͺ μμ μ΄κΈ°ν -> ν΄λμ€ μ΄κΈ°ν λΈλ