μμ±μ, this, κ°μ²΄ κ°μ νλ ₯
π‘ μμ±μ Constructor
* κ°μ²΄λ³μμ κ°μ 무쑰건 μ€μ ν΄μΌλ§ κ°μ²΄κ° μμ±λ μ μλλ‘ νκΈ° -> μμ±μ μ΄μ©
π μμ±μ κ·μΉ
: ν΄λμ€λͺ κ³Ό λ©μλλͺ μ΄ λμΌνλ€
: 리ν΄νμ μ μ μνμ§ μλλ€ (voidλ μ¬μ©X)
: μμ±μλ κ°μ²΄κ° μμ±λ λ νΈμΆλλ€. μ¦, new ν€μλκ° μ¬μ©λ λ νΈμΆλλ€
package com.company;
class Animal {
String name;
void setName(String name) {
this.name = name;
}
}
class Dog extends Animal{
void sleep() {
System.out.println(this.name + " zzz");
}
}
class HouseDog extends Dog {
HouseDog(String name) { // μ
λ ₯κ°μΌλ‘ λ¬Έμμ΄ νμλ‘νλ μμ±μ
this.setName(name);
}
void sleep() {
System.out.println(this.name + " zzz in house ");
}
void sleep(int hour) {
System.out.println(this.name + " zzz in house for " + hour + "hours");
}
}
public class Main {
public static void main(String[] args) {
// HouseDog dog = new HouseDog(); // μ
λ ₯κ°X -> μ€λ₯
HouseDog dog = new HouseDog("puppy");
}
}
* μμ±μλ₯Ό μ¬μ©νλ©΄ setName("puppy") κ°μ νλμ κ°μ²΄ μμ±μμ μ μ΄ν μ μλ€
π‘ λν΄νΈ(default) μμ±μ
: μμ±μμ μ λ ₯ νλͺ©μ΄ μκ³ μμ±μ λ΄λΆμ μ무 λ΄μ©μ΄ μλ μμ±μ
class Dog extends Animal {
Dog() { // default μμ±μ
}
void sleep() {
System.out.println(this.name + " zzz");
}
}
: ν΄λμ€μ μμ±μκ° νλλ μλ€λ©΄ μ»΄νμΌλ¬λ μλμΌλ‘ λν΄νΈ μμ±μλ₯Ό μΆκ°νλ€
* μμ±ν μμ±μκ° νλλΌλ ꡬνλμ΄ μλ€λ©΄ μ»΄νμΌλ¬λ λν΄νΈ μμ±μλ₯Ό μΆκ°νμ§ μλλ€
π‘ μμ±μ μ€λ²λ‘λ©
: νλμ ν΄λμ€μ μ¬λ¬κ°μ μ λ ₯νλͺ©μ΄ λ€λ₯Έ μμ±μλ₯Ό λ§λ€ μ μλ€
class HouseDog extends Dog {
HouseDog(String name) {
this.setName(name);
}
HouseDog(int type) {
if (type == 1) {
this.setName("yorkshire");
} else if (type == 2) {
this.setName("bulldog");
}
}
}
* κ°κ°μ μμ±μλ₯Ό μ΄μ©ν κ°μ²΄λ₯Ό λ§λ€μ΄μ μ¬μ©νλ€
π‘ this
: μμ±λ μΈμ€ν΄μ€ μ€μ€λ‘λ₯Ό κ°λ¦¬ν€λ μμ½μ΄ + μΈμ€ν΄μ€λ§λ€ λ€λ₯Έκ°μ κ°μ§λ€
: μμ μ λ©λͺ¨λ¦¬λ₯Ό κ°λ¦¬ν΄
: μμ±μμμ λ€λ₯Έ μμ±μλ₯Ό νΈμΆ
: μμ μ μ£Όμλ₯Ό λ°ννλ€
π μμ±μμμ λ€λ₯Έ μμ±μλ₯Ό νΈμΆνλ this
π κ°μ²΄ κ°μ νλ ₯
: κ²°κ³Ό