복습
https://blue-dot.tistory.com/57
자바 기초 공부 일지 15. 메소드 오버로딩, this 참조 변수
● 메소드 오버로딩이란 같은 이름의 메소드를 중복으로 만들 때를 의미합니다. 자바에서 한 클래스에 같은 이름의 메소드를 두 개 이상 받을 수 없지만, 매개변수의 개수 혹은 타입을 다르게
blue-dot.tistory.com
인생을 몇 년차를 살든 우리에게 필요한 것과 잃으면 안되는 것에 대한 것을 클래스와 메소드를 활용해서 작성해볼게요.
this() 를 기필코 쓰겠다.
처음에 이렇게 작성했을 때에는 문법적으로는 맞지만 값에 오류가 떴어요.
자꾸만... 0년차를 살게 되는 거예요.
package day14;
class FeelingSoGood{
public int a;
public void myage(int a) {
this.a = a;
}
public void love(String n) {
System.out.println("인생 "+ a + "년차, 필요한건 "+ n + "이야.");
}
public void fire(String f) {
System.out.println("우리가 잃으면 안되는 것은 " + f + "이야.");
}
}
public class Test05 {
public static void main(String[] args) {
FeelingSoGood good = new FeelingSoGood();
good.love("사랑");
good.myage(5);
good.fire("열정");
}
}
이렇게요... 왜 자꾸 0년차밖에 살지 못하나 했어요...
그런데 이것은 작성의 순서가 잘못 작성되었기 때문이에요.
FeelingSoGood good = new FeelingSoGood();
의 새로운 good 인스턴스가 생성되면서 그 안의 메소드를 순차적으로 실행하는데
myage 의 순서가 love의 아래에 있었기 때문입니다.
love 메소드가 먼저 실행되었기 때문에 그 안에 있는 참조변수 a의 값은
아직까지 int a 의 상태이기 때문에 0의 값이 출력됩니다.
그렇기 때문에 순서적으로 myage를 사랑의 위로 올리고
myage 의 값이 적용이 된 후에 love를 출력해야 그 값이 반환 됩니다.
package day14;
class FeelingSoGood{
public int a;
public void myage(int a) {
this.a = a;
}
public void love(String n) {
System.out.println("인생 "+ a + "년차, 필요한건 "+ n + "이야.");
}
public void fire(String f) {
System.out.println("우리가 잃으면 안되는 것은 " + f + "이야.");
}
}
public class Test05 {
public static void main(String[] args) {
FeelingSoGood good = new FeelingSoGood();
good.myage(5);
good.love("사랑");
good.fire("열정");
}
}
자바와 파이썬을 공부한지 14일 째 ... 여전히 모르는 것은 투성이지만 하나씩 해봅니다.
>> 인생 5년차, 필요한건 사랑이야.
우리가 잃으면 안되는 것은 열정이야. <<
'자바 > 자바 복습 되새김질' 카테고리의 다른 글
자바 복습. 공부한 내용들의 간단 리뷰! (0) | 2022.11.08 |
---|---|
자바 복습. 클래스Class (0) | 2022.11.02 |
자바 복습. 인터페이스 (0) | 2022.11.01 |
자바 복습. 상수 constant, 리터럴 literal (0) | 2022.10.27 |
자바 복습. 변수의 선언 (0) | 2022.10.27 |