본문 바로가기

전체보기

(205)
[JAVA] 인터페이스 인터페이스란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스이다. 특징 클래스가 아니다. 갖고있는 모든 메서드가 public abstract 추상 메서드이다. 인터페이스를 상속하면 오버라이딩을 해야한다. 멤버 변수는 항상 "public static final"이다. 클래스 멤버 변수밖에 생성하지 못한다. 객체를 생성하지 않기 때문에 객체 멤버 변수가 없다. 키워드 implements 예제 코드 public interface TVimpl { void turnOn(); void turnOff(); abstract void soundUp(); public abstract void soundDown(); } class LgTV imple..
[JAVA] 추상클래스 추상클래스란 메서드를 선언해 놓고 상속을 통해 자식 클래스에서 메서드를 완성하도록 유도하는 클래스이다. 기존에 이미 많은 자식 클래스들이 있는 상태에서 나중에 이들의 부모 클래스를 정의하기 위해 탄생했다. 특징 객체를 정의하지 않는고 클래스를 정의한다. 객체 생성이 불가능하다. 객체를 생성 불가하기에 메서드 또한 호출이 불가능하다. 추상클래스의 메서드는 오버라이드를 위해 존재한다. 이 경우 메서드에 abstract를 붙인다.(오버라이드 강제) 자식 클래스는 반드시 오버라이드 해야한다. {} 메서드 바디가 존재하지 않는다. 키워드 abstract 사용 이유 객체의 정의를 막기 위함이다. 예 [추상]모양 -> 원, 네모, 세모, 별 [추상]동물 -> 강아지, 고양이, 사슴 선언 예제 abstract + cl..
[JAVA] 오버라이딩 오버라이딩의 정의 자식 클래스가 부모 클래스가 가진 함수를 재정의 하는것이다. 기존 부모 클래스가 가지는 함수는 사용하지 않겠다. 특징 함수명이 동일하고 메서드 시그니쳐도 같다. 상속과 관계가 있다. 메서드를 재정의 하는 것이다. 결과적으로 나오는 메서드는 1개이다. 예제 코드 class Point { void printInfo() { System.out.println("a"); } } class ColorPoint extends Point{ void printInfo() { System.out.println("b"); } }
[JAVA] 상속 상속이란 부모클래스(상위클래스)의 멤버를 자식클래스(하위클래스)가 상속 받아 그대로 쓸 수있도록 하는 것이다. 특징 부모 클래스가 가지고 있는 멤버 변수, 메서드를 자식 클래스가 사용이 가능하다. 자식 클래스가 가지고 있는 멤버 변수, 메서드는 부모 클래스가 사용이 불가능하다. 모든 자식 클래스의 생성자 가장 첫 줄에는 부모 클래스의 기본 생성자가 자동 호출 됩니다. 부모 클래스가 가지고 있는 멤버 변수를 초기화할 능력이 없기 때문이다. super(); private 멤버변수, 메서드는 상속이 불가능하다. 중복된 코드를 줄일 수 있다. 다형성을 구현할 수 있다. 키워드 extends 상속의 선언 class + 자식 클래스명 + extends + 부모 클래스명{} 상속의 선언 예제 // 부모클래스 A cl..
[디버깅표] 선형탐색 코드에 대한 디버깅표 작성 코드 예제 // 배열을 선언 int[] arr = new int[5]; // 배열에 값 넣기 arr[0] = 1; arr[1] = 3; arr[2] = 2; arr[3] = 4; arr[4] = 5; // 찾고자하는 값을 지정 int key = 4; // 배열 길이만큼 반복 for(int i=0;i
[알고리즘] 선행탐색 선형탐색이란 왼쪽 인덱스부터 차례대로 비교하여 값을 찾아내는 방식의 알고리즘이다. 논리 원하는 값을 0번 인덱스 값과 비교한다. 동일한 값이 있다면 탐색완료 동일한 값이 없다면 다음 인덱스와 비교 next .... 이미지로 보기 특징 알고리즘 구현이 간단하다. 배열이 정렬되어 있지 않은 것을 전제로한다. 단점 배열이 길어질수록 비례해서 시간이 오래걸린다. 예제 [1,3,2,4,5]에서 4라는 값을 찾아보자 예제 코드 // 배열을 선언 int[] arr = new int[5]; // 배열에 값 넣기 arr[0] = 1; arr[1] = 3; arr[2] = 2; arr[3] = 4; arr[4] = 5; // 찾고자하는 값을 지정 int key = 4; // 배열 길이만큼 반복 for(int i=0;i
[디버깅표] 이진탐색 코드에 대한 디버깅표 작성 코드 예제 // 크기가 5인 배열선언 int[] arr = new int[5]; // 배열에 데이터 넣기 arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5; // 찾고자 하는 값 int key = 2; // 찾고자 하는 값의 인덱스 번호 int keyIndex = -1; // 배열의 시작 인덱스 int start = 0; // 배열의 마지막 인덱스 int end = arr.length - 1; // 탈출 할 때 까지 도는 반복문 while (start key) { // 찾는 값이 왼쪽에 있다는 뜻이므로 // 최대 인덱스를 중앙 인덱스의 왼쪽(-1) 인덱스로 잡는데 end = mid - 1; } // 중앙 인덱스 값이 찾고자 하는 값보다 작다면 els..
[JAVA] 클래스의 멤버변수에 static static이 붙는 경우 멤버 변수가 객체와 무관할 때 static을 붙인다. 생성자의 의한 초기화가 안되기 때문에 클래스 내에서 초기화한다. 클래스 소속의 공유자원이 된다. PI과 같이 항상 같은 변수 값을 가질 때 붙인다. 예제 코드 class Circle2 { static double PI = 3.14; }