
▶ 디지털 장치를 제어하기 위한 만들어진 언어 .
▶ 웹이 등장하면서 자바가 웹을 통해 엄청난 성공을 거두며 주류 언어로 자리 잡음.
▶ 현재 국내에서는 정부 및 기업의 시스템 통합 프로젝트가 대부분 자바를 기반.
클래스 이름의 첫 글자는 항상 대문자로 한다.
여러 단어인 이름은 단어의 첫 글자를 대문자로 한다.
상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분.
객체지향적
▶ 수많은 연구를 통하여 그 가치가 입증된 프로그램 설계 방법론
▶ 프로그램 상의 데이터에 초점을 맞춘 것
운영체제 독립적
배우기 쉽고 사용하기 쉬움
자동 메모리 관리(Garbage Collection)
: 데이터란 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값
: 데이터를 기반으로 하여 의미를 부여한 것
대소문자가 구분되며 길이 제한이 없다.
예약어를 사용하면 안 된다.
숫자로 시작하면 안 된다.
특수문자는 '_'와 '$'만을 허용한다.
클래스 이름의 첫글자는 항상 대문자
여러 단어 이름은 단어의 첫 글자를 대문자
상수의 이름은 대문자, 단어는 _로 구분
: 컴퓨터가 나타내는 데이터의 저장 최소단위로서 2진수 값 하나를 저장할 수 있는 메모리공간을 의미
: 데이터 처리 또는 문자의 최소 단위로서 8개의 비트가 모여 하나의 바이트가 구성됨
1) 기본형(Primitive type): 실제 데이터(값)을 저장
2) 참조형(Reference type): 데이터가 저장되어 있는 주소를 저장
변수의 자료형
상수: 수학에서 변하지 않는 값을 의미하고, 컴퓨터에서는 한번만 저장할 수 있는 공간으로 초기화 이후 다른 데이터(값)을 대입할 수 없다.
리터럴: 변수에 대입되는 값 자체
반드시 같은 데이터타입 간에 연산을 한다.
반드시 동일한 데이터타입의 값을 동일한 데이터타입의 변수에 대입한다.
결과값 또한 동일한 데이터타입의 값을 가진다.
a >> 숫자: 비트를 오른쪽으로 숫자만큼 이동하고 새로 생긴 비트는 0. 2로 나누는 효과
a << 숫자: 비트를 왼쪽으로 숫자만큼 이동하고 새로 생긴 비트는 0. 2로 곱한 효과
생략
배열: 동일한 자료형의 여러 변수를 묶음.
▶ 데이터에 순차 접근이 가능함.
▶ 많은 수의 변수를 하나의 문장으로 선언 가능
얕은 복사: 객체의 주소값만 가져와 참조형변수에 저장하고 하나의 객체를 두 변수가 참조하고 있는 것
깊은 복사: 다른 객체를 생성하여 새로운 객체에 데이터 내용을 복사하는 것
메소드의 예약어
1) static: static 영역에 할당하여 객체 생성 없이 사용함
2) final: 종단의 의미, 상속시 오버라이딩 불가능
3) abstract: 미완성된, 상속하여 오버라이딩으로 완성시켜 사용해야 함
4) syncronized: 동기화 처리, 공유 자원에 한 개의 스레드만 접근 가능함
5) static final: static과 final의 의미를 둘 다 가짐
객체지향 프로그래밍: 현실세계의 객체를 클래스와 객체의 개념으로 컴퓨터에서 구현한 것
▶ 코드의 재사용성이 높다.
▶ 코드의 관리가 쉽다.
1) 상속
2) 캡슐화
3) 다형성
: 중요한 것은 남기고 불필요한 것은 제거하는 일
상속: 다른 클래스가 가지고 있는 멤버들을 새로 작성할 클래스에서 직접 만들지 않고, 상속을 받음으로써 새 클래스가 자신의 멤버처럼 사용할 수 있는 기능
▶ 클래스의 재사용, 연관된 일련의 클래스들에 대해 공통적인 규약 정의
상속의 장점
보다 적은 양의 코드로 새로운 클래스 작성 가능
코드를 공통적으로 관리하기 때문에 코드의 추가 및 변경 용이
코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여함
: 자식 클래스가 상속받은 부모 클래스를 재작성하는 것
: 한 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것
다형성: '여러 개의 형태를 갖는다'는 의미
▶ 상속을 이용한 기술로, 자식 객체를 부모클래스타입의 변수로 다룰 수 있는 기술
: 상속관계에 있는 부모, 자식 클래스 간에 부모타입의 참조형 변수가 모든 자식 타입의 객체의 주소를 받을 수 있다.
: 자식 객체의 주소를 받은 부모 참조형 변수를 가지고 자식의 멤버를 참조해야 할 경우, 후손 클래스 타입으로 참조형 변수를 형 변환해야 한다.
: 현재 참조형 변수가 어떤 클래스 형의 객체 주소를 참조하고 있는지 확인할 때 사용, 클래스 타입이 맞으면 true, 아니면 false 반환
: 실제 실행할 메소드 코드와 호출하는 코드를 연결시키는 것
: 컴파일시 정적바인딩된 메소드를 실행할 당시의 객체 타입을 기준으로 바인딩 되는 것
▶ 자체적으로 객체 생성은 불가능하나, 참조형 변수 type으로는 사용 가능
▶ abstract 메소드가 없어도 abstract 클래스 선언 가능
▶ 모든 인터페이스의 메소드는 묵시적으로 public abstract
▶ 변수는 묵시적으로 public static final
▶ 객체 생성은 안되나, 참조형 변수로서는 가능
구분
인터페이스 추상클래스
상속 다중상속 단일상속
구현 implements 사용 extends 사용
추상메소드 모든 메소드 abstract abstract 메소드 0개이상
abstract 묵시적으로 abstract 명시적 사용