공부하는 챕터와 상관없이 헷갈렸던 기본적인 객제지향개념들
클래스가 있을 때, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다.
결국 같은의미라고 생각할 수 있지만 의미하는 범위는 [객체 > 인스턴스] 로 객체가 조금 더 포괄적이고 인스턴스는 구체적이다.
예시를 들자면 '학생'이라는 것은 그냥 객체라고 말할 수 있지만 Student라는 클래스 안에서의 '학생'은 인스턴스라고 말하는것이 좋다.
모든 클래스에서 생성자는 반드시 하나 이상 정의되어야한다.
그렇기때문에 우리가 클래스 내에 생성자를 하나도 정의해주지 않았다면 컴파일러는 자동으로 기본 생성자를 추가하여 컴파일한다.
이것은 어디까지나 클래스 내에 생성자가 '하나도 없는 경우'에만 해당한다는점!
class Person {
String name;
}
class Student {
String name;
Student(String n) {
name = n;
}
}
Person 클래스의 경우 생성자가 하나도 없기 때문에 컴파일러가 기본생성자를 추가해주었다.
class Test {
public static void main(String[] args) {
Person person = new Person();
Student student = new Student();}} //컴파일에러
그러나 Student의 경우 이미 생성자 Student(String n)이 정의되어 있기때문에 컴파일러가 기본생성자를 추가해주지않아 컴파일에러가 발생하게된다.
여기서 오류를 해결하고 싶다면 Student 클래스에 생성자 Student()를 추가로 정의해주거나 new Student(n) 생성자를 사용해주면 된다.
자료형 | 기본값 |
---|---|
boolean | false |
byte, short, int | 0 |
참조형 변수 | null |
class Bus {
int busNum = 4212; //기본형 변수 초기화
Color color = new Color(); //참조형 변수 초기화
}
객체지향의개념을 완전히 깨닫기엔 아직도 한참 먼 것 같다..
추천방식대로 꾸준히 반복학습 할 예정입니다.