1
2
3
4
5
6
|
public class A01_ClassDEC {
public static void main(String[] args) {
Person p1 = new Person();
p1.name="홍길동";
}
}
|
cs |
1.
메인메서드에서 외부클래스를 사용하기 위해 new 생성자를 통해 만드는 참조변수에는 클래스의 주소값이 들어있다.
+ stack 영역과 heap 영역.
참조변수 p1을 들여다보면 Person클래스의 주소값이 들어있음.
2.
클래스의 주소값이 담긴, 외부 클래스를 가져오기위해 만든 참조변수 p1.
이 p1 뒤에 점( . )은 메서드 호출할때만 쓰이는 건줄 알았다.
필드 호출시에도 쓰임 ㅎㅎ
1
2
3
4
5
6
7
8
9
10
|
class Calcu {
private int num01;
private int num02;
private int tot;
Calcu(int num01, int num02){
this.num01 = num01;
this.num02 = num02;
}
}
|
cs |
3.
this는 자기 클래스를 뜻함. 여기서는 Calcu
생성자 또는 메서드의 '매개변수'와 '필드명'이 같을 때 this를 붙여줘서 얘는 필드 출신이야라고 알려주는 느낌.
매개변수를 필드명과 다르게 쓰면 this를 쓸 필요가 없어짐.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
class product{
private int price;
private String name;
private int total;
product(String name, int price){
this.name = name;
this.price = price;
}
public void buy() {
System.out.println("가격이 "+price+"원인 물건 "+name+"을 구매하였습니다.");
}
public void buy(int cnt) {
total = cnt*price;
System.out.println("가격이 "+price+"원인 물건 "+name+"을 "+cnt+"개 구매하여 총 비용이 "+total+"원 입니다.");
}
}
|
cs |
4.
이름이 같더라도 매개변수의 type, 순서, 갯수가 다르면 다른 생성자나 메서드로 인식하여 같은 클래스에서 선언이 가능하다.
다시말해 생성자나 메서드의 매개변수의 type 또는 순서 또는 갯수가 다르면 같은 이름으로 선언 가능.
이를 오버로딩(overloading)이라고 함.
@@마트에서 가격이 @@@원인 물건 @@@을 @개 구매하여 총 비용이 @@@원 입니다. 를 호출해보세요.
뭘 어케 해야 할지 막막하지만 나에게 주어진 무기들을 하나하나 생각해보면 빛이 조금씩 보이는 듯한 기분이다.
클래스는 뭘로 할지,
그 클래스의 필드는 뭘로하고
초기화를 위한 생성자는 필요한지,
메서드는 어떻게 쓸지.
감이온다.
클래스를 만들고
필드값으로 가격과 물건이름 갯수 비용을 설정
생성자를 만들어 마트이름을 생성자의 매개변수로 만들자.
(사실 생성자 안만들어도 가능함 ㅎㅎ;;)
마지막으로 가격, 물건이름, 갯수, 비용을 매개변수로 하는 메서드를 만들어 출력기능까지 넣자.
메인메서드로 이동.
new 생성자를 이용해 방금 만든 클래스를 불러오자
마트이름을 매개변수로 했으니 마트이름을 꼬옥 넣고 만들어야함.
위 클래스의 주소가 담긴 변수를 이용해 메서드 호출
이때도 마찬가지로 매개변수를 꼬옥 넣어줘야함.
-------------------------------------------------------------------------------A01_ClassDEC.java ~ A03_BuyProduct.java
복습재미썽
'JAVA > 되새김질' 카테고리의 다른 글
메서드 특징!? 아니 내가 몰랐던 것 (0) | 2019.08.18 |
---|---|
객체지향 복습(3) ─1:1 (Obj vs Obj) + 객체 사용 (0) | 2019.08.17 |
야구 스코어 만들기 (0) | 2019.08.16 |
this에 대한 고찰 (0) | 2019.08.15 |
객체지향 복습(2) ─ 클래스 선언, 필드 사용방법, 접근제어자 (0) | 2019.08.15 |