다중 플랫폼 지원, 객체 지향, 네트워크 언어이고 가장 많이 사용되는 프로그래밍 언어 중 하나썬 마이크로시스템즈 - 제임스 고슬링 - 객체지향적 프로그래밍 언어로 개발과거 가전제품, 휴대용 장치 탑재 용 웹 AP, 안드로이드 모바일 AP 개발빅데이터 분석에 사용 - 하
초기에는 탑 다운 방식의 순차적 프로그래밍 방식을 사용 -> 코드가 길어질수록 코드 중복 발생, 유지보수가 어려워짐GOTO문의 문제를 해결하기 위해 구조적 프로그래밍 방식 채택 -> 데이터 처리 방식(프로시저 실행)만 구조화, 데이터는 구조화 하지 못함대안으로 객체 지
객체정의 : 물리적(눈에 보이거나), 추상적(눈에 안보이거나)인 것 중에서 자신의 속성을 가지고 있으며 식별 가능한 것용도 : 클래스로 객체를 생성하여 사용클래스정의 : 객체의 속성과 기능을 코드로 구현한 것, '클래스를 정의한다' - 객채를 클래스로 구현하는 것, 객
로버트 C.마틴이 2000년대 초반 객체 지향 프로그래밍 및 설계의 다섯 가지 기본원칙으로 제시한 것한 클래스는 하나의 책임만 가져야 함 \- 하나의 모듈에 여러가지 책임이 있다면 수정해야 하는 이유도 여러개가 될 수도 있음 \- 클래스에 하나의 책임 만 갖고 있다
지역 변수함수나 메서드 내부에 선언, 함수 밖에서는 사용할 수 없음지역 변수가 생성되는 메모리를 스택이라고 함함수 호출 시 생성, 함수 반환 시 할당된 메모리 공간이 해제되면서 함께 없어짐멤버 변수 인스턴스 변수라고도 함클래스가 생성될 때 힙 메모리에 생성되는 변수클
하나의 메서드 이름으로 여러 기능을 담음클래스 내에 같은 이름의 메서드 여러개 선언하는 것메서드명 동일매개 변수의 타입, 개수, 순서가 달라야함잘못된 예시대표적인 예하나의 이름으로 사용하기 때문에 같은 기능이라고 예측 가능메서드 이름 절약가변인자 : 여러 문자열을 하나
new연산자로 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화 담당객체 초기화 : 필드를 초기화하거나 메소드를 호춣해서 객체를 사용할 준비를 하는 것new연산자에 의해 생성자가 실행되면 힙 영역에 객체가 생성되고 객체의 번지가 리턴됨모든 클래스는 생성자가 반드시
지역변수는 사용전 수동 초기화 해야 함 \- 지역변수는 메서드 호출 작업 동안만 존재하여 계속 0으로 초기화 하면 성능이 떨어짐인스턴스 변수, 클래스 변수는 자동 초기화됨 \- 객체에 여러 변수가 있는데 모두 수동 초기화하기에는 너무 많아 자동초기화 해줌 ex) V
이미 잘 개발된 클래스를 재사용하여 새로운 클래스를 만들어 중복되는 코드를 줄여주는 것부모 클래스의 수정으로 모든 자식 클래스들도 수정되는 효과를 가져와 유지 보수 시간 최소화자식클래스가 부모클래스 보다 더 많은 내용을 가짐클래스 멤버로 참조변수를 선언하는 것'원은 점
상위 클래스에 정의한 메서드가 하위클래스에서 메서드를 재정의하는 것선언부는 그대로, 구현부만 변경 가능상속받은 메서드를 자신에 맞게 변경하는 것을 오버라이딩선언부가 상위 클래스의 메서드와 일치접근 제어자(public, protected, default, private)
물리적 형태는 파일 시스템의 폴더 형태이지만 폴더 기능만 하는 것이 아니라 클래스의 식별자 역할클래스명이 동일해도 패키지가 다르면 다른 클래스로 인식해당 클래스가 어떤 패키지에 속할 것인지 선언하는 것패키지 선언이 없는 클래스를 default 패키지에 포함시킴, JDK
클래스, 클래스의 멤버에 부가적인 의미 부여여러 제어자 같이 사용 가능 \- 접근제어자는 하나만, 맨 앞에 쓰는 것이 관례클래스를 선언할 때 특정 메모리에 저장되어 모든 인스턴스가 공유인스턴스보다 먼저 생성되어, 인스턴스가 아닌 클래스 이름으로도 참조하여 사용 가능일
하나의 코드가 여러 자료형으로 구현되어 실행되는 것상위 타입 참조 변수로 하위 타입 객체를 다루는 것하위 타입 참조 변수로 상위 타입 객체를 다루는 것은 허용하지 않음사용할 수 있는 멤버의 갯수를 조절하는 것참조변수를 형변환 한다고 해서 기본형의 형변환 처럼 값이 달라
미완성 설계도, 미완성 메서드를 갖고 있는 클래스 (concrete class 반대)다른 클래스 작성에 도움 주기 위한 것, 인스턴스 생성 불가abstract 예약어를 사용하여 선언부만 작성하고 구현부는 작성하지 않은 메서드꼭 필요하지만 자손마다 다르게 구현될 것으로
추상 메서드와 상수로만 이루어짐인스턴스를 생성할 수 없음인터페이스 모든 멤버는 public메서드에 public abstract, 변수에 public static final을 쓰지 않아도 자동으로 변환추상클래스 : 일반 메서드 + 추상 메서드인터페이스 : 추상 메서드만인
클래스 내부에 선언한 클래스내부 클래스에서 외부 클래스 멤버들을 쉽게 접근 가능DEF클래스가 ABC 클래스 안에서만 사용되면 단독으로 둘 필요가 없어 내부클래스로 만들어 코드 복잡성 줄임변수의 선언 위치에 따른 종류와 같음인스턴스 변수 선언 위치와 같음다른 외부 클래스
자바 8부터 제공하는 함수형 프로그래밍 방식함수형 프로그래밍 : 함수의 구현과 호출만으로 프로그램을 만드는 방식함수 이름이 없는 익명 함수를 만드는 것매개변수 자료형 생략 가능, 매개 변수가 하나인 경우 괄호 생략 가능매개 변수가 두 개인 경우는 괄호 생략 불가중괄호