객체 지향 언어
80년대 초 소프트웨어의 위기와 함께 절차적 언어에서 객체지향 언어로 개념이 이동함
코드의 높은 재사용성, 유지 보수의 용이성, 중복 코드의 제거
객체 지향 언어라 하여 특별한 것이 아니며, 프로그래밍 언어의 기본에 몇 가지 개념과 규칙이 추가된 것임
1. 캡슐화
2. 상속
3. 추상화
4. 다형성(매우 중요)
※ 4가지 개념을 철저히 익힌 후, 추상화, 인터페이스 등에 대해 배우고, 암기. Web쪽으로 갈 경우 JSP, Spring. Mobile로 갈 경우 Android를 중심으로 실습 위주의 코딩 경험 연습
클래스와 객체
클래스의 정의 : 객체를 정의한 내용
클래스의 용도 : 객체를 생성하는데 사용
| 클래스 제품 설계도 |
객체 제품 |
객체를 만드는 이유 "사용하려고"(객체의 속성과 기능을) |
객체의 구성요소 : 속성과 기능
tv라는 객체
속성 : 변수 (ex_크기, 길이, 높이)
기능 : 매서드(ex_on/off, 채널변경, 음량조정)
객체와 인스턴스
객체 = 인스턴스 (생물학의 종-객체, 각 개체들-인스턴스)
인스턴스 = 특정 클래스로부터 생성된 객체
class -> (인스턴스화) -> instacne (object)
하나의 소스파일에는 하나의 클래스만 작성한다
여러 개의 객체가 있을 경우 파일명은 publi class 또는 class들 중 하나와 일치해야 한다
하나의 소스파일에 2개 이상의 public class를 정의할 수 없다
class의 이름은 대소문자를 구별한다. 이를 어길 경우 컴파일 오류가 발생하지는 않지만, main method 실행 시 엉뚱한 결과값을 반환한다.
객체의 생성과 사용
Tv t; //참조변수 선언
t = new Tv(); //참조변수를 통해 Tv라는 객체 생성
// 인스턴스의 변수를 사용하는 방법
t.channel = 7; //인스턴스의 변수 호출(사용)
t.channelDown(); //인스턴스의 매서드 호출(사용)
new 연산자의 대하여 : new 연산자는 주소를 대입하는 것이라 보면 된다.
Tv t1; //0*100의 주소를 갖는 객체 생성
Tv t2; //0*200의 주소를 갖는 객체 생성
t2 = t1;
// t2의 주소 0*200이 사라지고 t1과 t2가 모두 0*100 주소에 있는 값과 mapping 된다.
garbage collector : 코드를 순회하면서 필요 없는 메모리 주소값들을 삭제