객체
Object(물체)가 가지고 있는 속성과 동작을 하나로 묶은 것을 객체라고 한다. 우리가 살고 있는 세상으로 비교해보면 사람의 경우 팔, 다리, 눈, 코 등의 속성을 가지고 있으며 뛰기, 먹기 등 동작을 표현할 수 있다. 이것을 자바에서는 필드와 메소드라고 표현한다.
객체간의 관계
집합관계
- 하나의 큰 객체안에 여러개의 객체들이 속해있는 것을 의미한다.
- ex) 자동차안에는 핸들, 엔진, 기어 등이 속해있다.
사용관계
- 객체가 다른 객체의 메소드를 사용하는 것을 의미한다.
- ex) 사람이 자동차 기능의 달린다를 사용한다.
상속관계
- 부모객체를 기반으로 자식객체를 만드는 것을 의미한다.
- ex)침대는 가구의 한 종류이다.
클래스
객체에 대한 설계도를 의미한다. 따라서 객체를 만들기 위해서는 사전에 클래스를 정의해야한다.
이 클래스로 만들어진 객체를 인스턴스라고 부른다.
클래스의 용도
클래스에는 사용 용도에 따라 라이브러리용과 실행용으로 나눌 수 있다. 이전 포스팅들을 보면 main()메소드가 바로 실행용이며 나머지 클래스는 라이브러리용이다. 따라서 실행용 메소드는 단 한개만 존재하며 나머지 클래스는 라이브러리용이라는 것을 알 수 있다.
생성자
객체 생성시 호출되어 객체의 초기화를 담당한다. 여기서 객체 초기화는 필드 및 메소드를 호출하여 객체를 사용할 수 있도록 하는 것을 의미한다.
기본 생성자
모든 클래스는 생성자가 반드시 존재한다.
public class Car {
String wheel;
String color;
String name;
Car(){
}
}
위에 작성한 코드에서 Car()을 자세히 보면 중괄호안에 아무것도 없는 것을 볼 수 있는데 이것을 기본 생성자라고 한다.
따로 작성하지 않아도 컴파일 후 바이트 코드 파일을 보면 기본 생성자가 자동으로 생성된 것을 볼 수 있다.
하지만 선언한 생성자가 한개라도 없으면 컴파일러는 기본 생성자를 추가하지 않는다.
생성자
생성자를 만드려면 아래와 같이 작성하면 된다.
public class Car {
String wheel;
String color;
String name;
Car(String wheel, String color, String name){
this.whell = wheel;
this.color = color;
this.name = name;
}
}
다른 생성자 호출하여 중복 코드 없애기
생성자 오버로딩이 많아지게 되면 어쩔 수 없이 중복된 코드들이 나올 수 밖에 없다. 이것을 해결하기 위해 this() 메소드를 활용하는 것이 좀 더 깔끔한 코드를 만드는데 도움이 된다.
package number1;
public class Car {
String wheel;
String color;
String name;
Car(){
}
Car(String wheel){
this(wheel, "빨강", "프라이드");
}
Car(String wheel, String color) {
this(wheel, color, "프라이드");
}
Car(String wheel, String color, String name) { //공통 실행코드
this.wheel = wheel;
this.color = color;
this.name = name;
}
}
위에 있는 코드는 공통 실행코드를 호출하여 위에 두개의 생성자를 만들 수 있도록 하는 것을 표현한 코드이다.
'JAVA' 카테고리의 다른 글
7.상속 (0) | 2023.11.08 |
---|---|
6. 인스턴스 멤버 및 정적 멤버 (0) | 2023.11.08 |
4. main mathod (0) | 2023.11.06 |
3. 참조 타입과 참조 변수 (0) | 2023.11.06 |
2. 반복문 (0) | 2023.11.04 |