Java의 다형성 다형성 한 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것이다. 상위 클래스 타입의 참조변수를 통해 하위 클래스의 객체를 참조할 수 있도록 허용 반대로 하위 클래스의 타입에서 상위 클래스의 객체를 참조하는 것은 불가능 참조변수의 타입 변환 참조변수의 타입 변환은 사용할 수 있는 멤버의 개수를 조절하는 것을 의미 상속 관계에 있는 상위 클래스와 하위 클래스 사이에만 타입 변환이 가능 하위 클래스 타입에서 상위 클래스 타입으로의 타입 변환(업캐스팅)은 형변환 연산자 생략 가능 상위 클래스에서 하위 클래스 타입으로 변환(다운캐스팅)은 형변환 연산자를 반드시 명시 instanceof 연산자 캐스팅이 가능한 지 여부를 boolean 타입으로 확인할 수 있는 자바의 문법 요소..
Java의 캡슐화 캡슐화 특정 객체 안에 관련된 속성과 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것 데이터 보호화 내부적으로 사용되는 데이터의 불필요한 외부 노출을 방지 유지보수와 코드 확장 시 오류의 범위를 최소화 캡슐화의 핵심 수단으로는 접근제어자(Access Modifier), getter와 setter 메서드가 존재 패키지(Package) 특정한 목적을 공유하는 클래스와 인터페이스의 묶음이다. 패키지는 물리적인 디렉토리이고, 클래스나 인터페이스 파일은 해당 패키지에 속함 패키지가 있을 경우 소스 코드의 첫 번째 줄에 반드시 패키지명이 표시되어야 함 클래스의 충돌을 방지해주는 기능을 보유 Ex) java.lang, java.util, java.io 등 import문 다른 패키지 내의..
Java의 상속 상속 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소이다. 상위 클래스의 멤버를 하위 클래스와 공유하는 것을 의미 extends 키워드를 사용하여 정의 단일 상속만을 허용 class Parent { // 상위 클래스 } class Child extends Parent { // 하위 클래스, Parent 클래스를 상속받는 Child 클래스 } 포함 관계 포함(composite)은 클래스의 멤버로 다른 클래스 타입의 참조변수를 선언하는 것을 의미한다. 클래스 간의 관계가 '-은 -이다(IS-A)' 관계는 상속, '-은 -을 가지고 있다(HAS-A)' 관계는 포함 단위별 여러 개의 클래스는 코드가 작게 나눠 작성되어 있으므로 코드를 관리하는데 ..
Java의 생성자 생성자(Constructor) 인스턴스 변수를 초기화하는 데 사용되는 메서드이다. 생성자와 메서드의 차이점 생성자의 이름은 반드시 클래스의 이름과 같아야 함 생성자는 리턴 타입이 없음 기본 생성자(Default Constructor) 모든 클래스에는 반드시 하나 이상의 생성자가 존재 생성자가 클래스 안에 없을 경우 자바 컴파일러는 기본 생성자를 자동으로 추가 생성자가 있을 경우 기본 생성자가 아닌 추가한 생성자를 기본으로 사용 클래스명(){} // 기본 생성자 DefConst(){} // DefConst 클래스의 기본 생성자 매개변수가 있는 생성자 메서드처럼 매개변수를 통해 호출 시 해당 값을 받아 인스턴스를 초기화 인스턴스마다 다른 값을 가지고 초기화가 가능하여 고유한 특성을 지닌 인..
Java의 객체지향 프로그래밍 기초 객체지향 프로그래밍 모든 실재하는 어떤 대상을 프로그래밍 언어에서는 객체(Object)라고 부른다. 객체지향 프로그래밍(OOP, Object Oriented Programming)의 개념은 이 객체에서 시작된다. 객체지향이론의 핵심 개념은 실제 세계가 객체들로 구성되어 있고 발생하는 모든 사건들은 객체들의 상호작용을 통해 발생한다는 것을 전제로 한다. 객체지향 프로그래밍은 "프로그래밍에서 필요한 데이터를 한 데 모아 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 특정 기능을 구성"하는 프로그래밍 방법론을 지칭한다. 즉, 실제 사물의 속성(state)과 기능(behavior)을 분석한 후 이것을 프로그래밍의 변수와 함수로 정의함으로..
Java의 배열 배열이란 같은 타입의 변수들을 하나의 묶음으로 묶은 자료 구조를 의미한다. int num1, num2, num3, num4, num5; // 배열을 사용하지 않는 경우 int[] num = new int[5]; // 배열을 사용하는 경우 배열의 선언과 초기화 // 배열을 다루기 위한 참조변수 선언 int[] value; // 배열의 선언, 타입[] 변수명; // 실제 저장공간 생성 value = new int[5]; // 배열의 생성, 변수명 = new 타입[길이] // 배열의 선언과 생성을 한줄로 간략화 int[] value = new int[5]; // 원하는 값으로 배열의 생성과 초기화 int[] num = {1, 2, 3, 4, 5, 6, ..., 100}; 배열의 인덱스 배열이 ..
Java의 제어문 Java의 조건문과 반복문을 통틀어 제어문이라고 한다 제어문 조건문 : if문, switch문 반복문 : for문, while문, do-while문 Java의 조건문 특정 조건에 부합하는 경우, 특정 코드를 실행 또는 실행시키지 않을 수 있다 if문 소괄호 안에 boolean값으로 평가될 수 있는 조건식을 넣고 실행 블록인 중괄호에는 조건식이 참일 때 실행할 코드를 입력 if(조건식) { // 조건식이 참일 떄 실행될 블록 } if ~ else문 if문의 조건식이 true일 경우 해당 블록이 실행되고 조건식이 false라면 다음 조건문인 else if문의 조건식을 확인하고 else if문의 모든 조건식이 false일 때 else블록을 실행 if(조건식1) { // 조건식1이 참일 때 실..
연산자 연산자란 하나의 값 또는 여러 개의 값을 피연산자로 하여 새로운 값을 만들어내는 기호를 의미한다 산술연산자 사칙연산에 사용되는 연산자(+, -, *, /)와 나머지 연산자(%)가 존재 나눗셈 연산자와 나머지 연산자를 사용할 떄는 우항에 0이 위치할 수 없음 나눗셈 연산자를 사용할 때, 좌항과 우항이 모두 int형이면 그 결과도 int형으로 소수점 이하 값은 버려짐 나눗셈 연산자를 사용할 때, 좌항이나 우항 중 실수 타입의 값이 있다면 실수 타입이 아닌 값도 실수 타입으로 자동 형변환되며 결과적으로 소수점이 버려지지 않은 결과값으로 반환 연산자 기능 예시(int) 결과값 + (덧셈 연산자) 두 항의 값을 더한 값을 반환한다 7 + 4 11 - (뺼셈 연산자) 좌항의 값에서 우항의 값을 뺀 값을 반환..