1. 객체지향 언어란
- 과학 또는 군사적인 군사 모의실험(simulation) 가상 세계 구현을 위한 노력으로 객체지향 시작
- 1980년까지만 해도 절치지향이 주류였다.
- 1995년 Java 탄생 = 객체지향 언어의 주류
- 특징
- 코드의 재사용성
- 코드의 관리 용이
- 코드의 신뢰성 증가
2. 클래스와 객체
- 클래스 = 설계도
- 객체 = 인스턴트화 된 것, 메모리에 적재된 데이터 공간
- 클래스의 구성요소
- 객체 생성 방법(인스턴스화)
Dog doge = new Dog();
doge.color = "pink";
doge.legs = 4;
doge.breed = "gin-dot";
- 객체의 재할당
- 하나의 객체가 두 개의 주소를 가리킬 수는 없다. 가리키고 있는 주소에서 나누는 것은 가능
Dog doge = new Dog();
Dog pinky = new Dog();
doge = pinky;
- 클래스의 또 다른 정의
- 데이터(Field)와 함수의 결합
- 변수 -> 배열 -> 구조체 -> 클래스
- 사용자 정의 타입 (User-defined type)
class Time {
int second;
int minute;
int hour;
}
Time[] times = new Time[5];
3. 필드와 메소드
class Test{
int a;
static int b;
void test(){
int c;
}
}
- 인스턴스 변수
- 지역 변수
- 공유 변수 ★★★★★★★★★
4. 메소드 오버로딩
- 같은 이름의 메소드를 여러 개 정의하는 것
- 조건
- 메소드의 이름 동일
- 매개변수의 개수 또는 타입이 달라야함
- 매개변수는 같은데 리턴 타입이 다른 경우는 안됨
5. 생성자
- 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메소드
- 기본 생성자
- 생성자가 하나라도 없으면 컴파일러가 기본 생성
6. 제어자
- 클래스, 변수, 메소드를 선언하는 곳에 추가 의미하는 역할
- 종류
- 접근 제어자 : private, public, protected
- 기타 : static, final 등
- static : 공통적으로 쓰이는 변수의 제어 역할
- final : 값이 입력되면 절대 바뀌지 않음
- 접근 제어자 : 외부로부터의 접근을 제한
- private : 같은 클래스 내에서만 접근 가능
- default : 같은 패키지 내에서만 접근 가능
- public : 전혀 없음
- protected : 다음주에 배울 것
3대 에러
- 컴파일 : 문법 오류
- 런타임 : 설계 오류
- 컨텍스트 : 컴퓨터 논리로는 문제가 없어 작동되지만 인간 입장에서는 의미적으로 문제가 있는 에러
싱글톤 존재 이유의 개념 : 계산을 하기 위해 계산기는 하나만 필요하지 두 개의 계산기로 하나는 덧셈 하나는 뺄셈을 하는 것은 비효율적이기 때문에~
숙제
- POS
- 슬롯머신(3x3)
- 5번의 기회
- 같은 모양이 몇 개냐에 따른 보상