재사용성, 유지보수, 중복 제거
파라미터 argument 매개변수 인자
클래스
- 객체를 생성하면, 메모리에 객체가 생성
- 설계도
- 객체를 정의해 놓은 것
- 데이터와 함수의 결합(구조체+함수)
- 사용자 정의 타입
변수 : 하나의 데이터를 저장할 수 있는 공간
배열 : 같은 타입의 여러 데이터를 저장할 수 있는 공간
구조체 : 타입 관계없이 서로 관련된 데이터들을 저장할 수 있는 공간
: 일반적인 의미
속성(변수), 기능(메소드)의 집합 = 객체의 멤버
: 특정 클래스의 객체 강조
"클래스의 객체다" 보다는 "클래스의 인스턴스다" 가 자연스럽다.
인스턴스를 생성할 클래스를 읽어, 인스턴스 생성에 필요한 메모리 계산, 메모리의 빈 공간을 찾아 객체 생성
클래스 영역에서만 정의
-선언부
-구현부
현재 실행 중인 메소드 종료 후 호출한 곳으로 돌아감
지역변수가 만들어지는 곳
메소드 작업공간
메소드 호출되면 메모리공간 할당받고, 종료되면 메모리 반환
-기본형 매개변수
인스턴스가 생성되는 곳
new 연산자에 의해 생성되는 배열, 객체
: 하나의 클래스에 같은 이름의 메소드를 여러개 정의
1. 메소드 이름 일치
2. 매개변수 개수/타입 불일치
3. 매개변수 일치, 리턴타입만 다른 경우 불가능
: 인스턴스가 생성될 때마다 호출되는 인스턴스 "초기화" 메소드
인스턴스 변수 초기화 / 생성 시 수행할 작업
Card c = new Card();
반드시 하나 이상의 생성자 존재
생성자 이름 = 클래스 이름
리턴값 X
: 참조변수 (인스턴스 자기 자신 = 인스턴스 주소 저장)
단, main메소드/static 메소드 사용 불가
: 생성자에서 다른 생성자 호출 (첫문장 사용)
Car() { this.("white",4) } // 첫 문장 사용
Car(String color, int door) { this.color=color; this.door=door;}
Car(Car c) { color = c.color; door=c.door; } // 인스턴스 복사
Student s = new Student(); // Student타입 참조변수 s에 Student객체 생성
Parent p = s; // 그 참조변수 s를 Parent타입 변수에 대입
Parent p = new Student(); // 부모타입 자식객체
Parent p = new Child(); // 부모타입 자식객체
Child c = (Child)p; // 자식타입 자식객체로 다운캐스팅