본문 바로가기

Language/Java

[JAVA] Generics 1. 제네릭스란? (1) 사전적 의미 Generics - 1) 일반적인, 2) 포괄적인 3) 총칭적인 java에서의 의미는 2,3번 뜻에 가깝다. Generics 타입은 여러가지 타입을 포괄한다. (2) Java에서의 Generics 의미 다양한 타입으로 이루어진 객체로 이루어진 매소드나 클래스의 타입 체크를 컴파일 시에 해주는 기능을 뜻한다. 어떤 매소드의 파라미터 자료형을 generics로 만들면, 해당 파라미터의 자료형은 들어오는 값의 자료형에 따라 바뀐다. 2. 제네릭스로 이루어진 매소드의 사용이 필요한 순간? 우리가 모두 다른 타입의 배열들을 순회 하며 원소값을 전부 출력해야 한다고 가정하자. 그렇다면, 해당 배열들을 순회하여 값을 출력하는 매소드를 전부 따로 만들어야 할 것이다. 왜냐하면 자료.. 더보기
[JAVA] Interface (인터페이스) 1. 인터페이스란? '클래스를 어떻게 만들어라'는 가이드 라인이다. 오로지 상수(static final로 선언된 변수)와 추상 매소드로만 이루어져 있다. 해당 인터페이스를 '구현' 한 클래스는 추상 매소드 전부를 구체화할 의무를 가진다. * 선언 interface 인터페이스 이름 { 상수 or 추상매소드 } //EX) public interface Animal { public abstract void cry(); //public abstract는 안 써도 됨. -> default로 되어있음 } *상속 or 구현 인터페이스 끼리 확장할 때는 상속(extends) 키워드를 사용한다. 클래스가 특정 인터페이스를 받아서 구체화될 떄는 구현(implements) 키워드를 쓴다. // 인터페이스로 확장 public.. 더보기
[JAVA] 추상화와 추상화 클래스 1. 객체지향 언어에서 추상화란? (1)추상화 뜻 *미술에서의 추상화 뜻 실제 자연계에 존재하는 사물의 대략적인 특징들을 추출하여 점,선,면 으로 단순화하여 표현하는 것 *'추상화 하다.'의 뜻 알고는 있지만, 정확하게 설명하기 어려운 사물을 그것의 중요한 부분이나 특징을 중점 잡아 설명하는 것. *객체지향에서의 추상화 클래스를 만들 때 굳이 알 필요 없거나 불 필요한 부분을 숨기거나 지우고, 중요한 속성에만 중점을 두어 내용을 추려 만드는 것. 추상화에는 2 가지 종류가 있는데, 제어 추상화와 데이터 추상화 이다. (2) 제어 추상화 사용자가 매소드의 복잡한 부분은 몰라도 사용할 수 있게 만드는 것이다. 매소드의 로직 부분은 숨기고, 사용자가 직접 써야하는 파트만 남기는 것이다. 예를 들어 우리가 컴퓨.. 더보기
[JAVA]열거형 1.열거형 클래스 (enum class) 정의 요일: 월, 화, 수, 목, 금, 토, 일 달력: JAN, FEB, MAR, APR, MAY, JUNE .... 과 같이 서로 관련 있는 상수들을 모아놓고, 해당 상수들에 대해 정의한 클래스 *상수란? 열거형 클래스 안의 핵심이 되는 값을 이야기 하는 것이지, 꼭 숫자일 필요 없다. 정수, 실수, 문자열 모두 가능하다. 위의 예를 해당 정의에 따라 나누어보면, 클래스 이름: 요일 / 상수: 월, 화, 수, 목, 금, 토, 일 클래스 이름: 달력/ 상수: JAN, FEB, MAR, APR, MAY, JUNE .... 이다. 2. 문법적 특징 1. 열거된 상수들은 차례대로 0부터 시작하는 index를 가진다. 2. 상수들은 모두 대문자로 적어야한다. 3. 상수와.. 더보기
[JAVA]final - Keyword final에 대해 - 1. 변수 앞에 썼을 때 final public final String lens = "광각렌즈"; 해당 변수는 같은 클래스 내에서도 값을 바꿀 수가 없다. (외부 클래스에서도 당연히 못 바꿈.) **그렇다면 무조건 선언과 동시에 초기화를 해야 할까? NO. 생성자를 통해 초기화 시켜도 된다! Why? 생성자를 통해 객체를 생성함과 동시에 final 변수를 초기화 하는 것은, final 변수를 선언과 동시에 초기화 하는 것과 의미가 같다. public class ActionCam extends Camera { public final String lens; //생성자 public ActionCam(){ // 생성자를 이용하여 final 변수 초기화 this.lens =.. 더보기
Chap07_13 참조(reference) 1. 참조 변수와 일반 변수의 차이 일반 변수는 값 자체를 변수에 바로 저장. 참조 변수는 값이 들어있는 주소를 변수에 저장 (자세한 건 밑에 자세히 풀어썼으니 참고 해주세요.) https://dalcheonroadhead.tistory.com/68 일반 변수와 참조 변수 바로 알기 1. 데이터 타입의 종류 크게 기본 타입과 참조 타입으로 나누어진다. 두 타입을 나누는 기준은 무슨 값이 저장되는가 이다. 2. 각 타입들이 값을 저장하는 원리 기본타입은 해당 변수에 값 자체를 dalcheonroadhead.tistory.com 2. a=b; 이후 b에 다른 값을 집어넣었을 때 둘의 차이 (1) 일반 변수의 경우 int a= 10; int b = 20; a = b; System.out.println(a); .. 더보기
[JAVA] Super 1.Super란? 자식 클래스에서 부모 클래스의 매소드를 부분적으로 사용 해야 하는 경우가 있을 것이다. 지금까지 들어온 카메라 클래스를 예로 들어보자. **사전 참고 사항 (부모 클래스와 자식클래스)** // 부모 클래스 public class Camera { public String name; public Camera() { this.name = "카메라" } public void takePicture() { // 사진 촬영 System.out.println(this.name + ": 사진을 촬영합니다."); } public void recordVideo() { // 동영상 녹화 System.out.println(this.name + ": 동영상을 녹화합니다."); } public void showM.. 더보기
일반 변수와 참조 변수 바로 알기 1. 데이터 타입의 종류 크게 기본 타입과 참조 타입으로 나누어진다. 두 타입을 나누는 기준은 무슨 값이 저장되는가 이다. 2. 각 타입들이 값을 저장하는 원리 기본타입은 해당 변수에 값 자체를 저장한다. (call by value) 따라서 int a = 1 이라면 말 그대로 a에는 1이 저장되어 있다. b의 경우에도 마찬가지로 double b = 3.5라면 b에는 3.5가 저장 되어 있다. 반면, 참조타입은 해당 변수에 "값이 저장되어 있는 주소"가 저장되어있다. 따라서 해당 변수에 저장된 주소로 가서 값을 확인한다. 만약 String c = "첼시는 우승 못한다." 이고, 해당 문자열이 힙에 저장된 주소가 'ae123' 이라면, 힙의 ae123으로 가서 값을 확인한다. 3. String 값을 ==으로.. 더보기