전체 글 137

추상 클래스(Abstract Class)

추상 클래스(Abstract Class) - 클래스 계층구조에서 상위에 위치, 하위 클래스를 대표하는 클래스 - 추상의 의미대로 "구체적"이지 않은 클래스 - 보다 구체적인 하위 클래스를 대표하는 클래스 다른 일반 클래스와 구별되는 특징 - 추상클래스는 직접 객체화(instantiation) 될 수 없다. -> 즉, 생성자를 사용하여 객체를 생성할 수 없다. - 추상 클래스는 다른 클래스에 의하여 상속되어야 한다. -> 즉, 하위 클래스가 없는 추상클래스는 의미가 없다. - 추상 클래스는 하위 클래스가 있어야 하므로 구현 시 클래스 앞에 키워드 fianl이 올 수 없다. 추상 메소드 - 메소드 몸체가 없는 메소드 - 추상 메소드 정의시 반환형 앞에 키워드 abstract를 기술하고, 메소드 몸체 구현 없..

오버라이딩(Overriding) / 오버로딩(Overloading)

메소드 오버라이딩(Overriding) - 상위 클래스의 동일한 메소드를 하위 클래스에서 다시 정의(코드를 다시 구현) - 메소드 재정의(method redefinition) - or 메소드 대체(method replacement) 메소드 오버라이딩의 목적 - 상위 클래스에서 이미 정의한 메소드를 다시 수정하지 않고 하위 클래스에서 좀더 보완 수정하거나 완전히 새로운 것으로 대체하기 위한 방법입니다. 메소드 오버라이딩 조건 - 메소드의 반환 값과 메소드 이름, 매개변수는 반드시 같아야 합니다. - 접근 지정자는 하위 클래스의 메소드가 보다 공개적이어야합니다. - 상위 클래스의 메소드가 public이면, 오버라이딩되는 메소드는 public만 가능합니다. - 상위 클래스의 메소드가 protected이면, 하..

다향성(Polymorphism)

다향성(Polymorphism) 프로그램 언어의 다형성은 그 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 프로그램 언어의 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 반댓말은 단형성으로, 프로그램 언어의 각 요소가 한가지 형태만 가지는 성질을 가리킨다. 업 캐스팅 - 하위 객체는 상위 클래스형 변수에 대입이 가능, 상위로의 자료형 변환을 합니다. - 업 캐스팅은 하위 클래스는 상위 클래스라는 개념이 성립합니다. 업 캐스팅의 제약 - 업 캐스팅된 변수로는 하위 객체의 멤버를 참조할 수 없는 제약이 있습니다. - 상위클래스의 변수는 하위 클래스를 접근 지정자만 허용한다면 접근이 가능합니다. 다운 캐스팅 - 상위 ..

클래스(Class) & 객체(Object)

클래스(Class) 객체를 정의하는 설계도 붕어빵 틀 레시피 public class 클래스명 { // 객체 변수 // 메소드 // (접근제어자) // (static) } 클래스명 객체명 = new 클래스명(); 객체(Object) 실체(?) 인스턴스(Instance) 클래스와 객체의 관계입니다. 클래스로부터 객체를 선언 (인스턴스 환) 어떤 객체는 어떤 클래스의 인스턴스 생성자(Constructor) 객체가 생성될 때 자동으로 호출됩니다. 생성자 규칙 클래스명과 이름 맞춰야합니다. 리턴 타입은 없습니다. public class 클래스명 { // 바로 아래가 생성자 클래스명() {} } this : 객체 자신을 의미합니다. this() : 생성자 위에 것들을 이용한 간단한 예시 class Car { Str..

객체지향 프로그래밍(Object Oriented Programing)

절차 지향 프로그래밍(Procedural Programming) - 객체지향 언어 개념이 나오면서 기존 프로그래밍 방식을 표현하기 위해서 사용했습니다. - 큰 틀은 일렬의 동작(모듈, 함수)를 순서에 맞게 단계적으로 실행합니다. - 데이터와 속성보다는 명령어의 순서와 흐름에 포커싱 합니다. - 소프트웨어 규모가 커지면서 기능들이 복잡해지면서 추가 개발이나 유지보수의 어려움의 한계를 갖습니다. - 절차적 프로그래밍 / 구저적 프로그래밍 객체지향 프로그래밍(Object Oriented Programing) - 클래스를 생성하고 클래스로부터 객체를 만들어 객체 간의 상호작용을 이용하여 주어진 문제를 해결하는 프로그래밍 방식입니다. - 데이터인 필드와 절차인 메소드를 하나로 묶은 클래스 단위의 프로그램입니다. ..

HashMap 주요 메소드

HashMap import java.util.HashMap; 생성자 new HashMap() argument로 (int Capacity, float loadFactor)를 직접 지정할 수 있습니다. 용량은 해싱 기법을 통해 분류되는 카테고리의 갯수라고 할 수 있습니다. 사용률은 전체 용량을 변경할 조건을 의미합니다.(75%가 차면 현재 용량의 2배로 용량 변경 등) 메소드 메소드 기능 put(키, 값) 키(Key)와 값(Value)을 입력, 제네릭으로 지정한 타입에 맞는 일반 배열을 이용해 한번에 넣어줄 수 있음, 만약 중복되는 키/값을 제공하면 기존 키가 가지고 있던 값을 제공된 값으로 변경합니다. keySet() 키를 별도로 추출하여 컬렉션 형태로 반환 합니다.(Set 생성..

HashSet 주요 메소드

HashSet import java.util.hashSet 생성자 - new HashSet(); - 인자값으로 용량과 사용률을 줄 수 있습니다.(HashMap과 동일) - 용량 : 해시 테이블의 갯수를 의미(카테고리의 갯수, 기본 16) - 사용률 : 해시 테이블이 얼마만큼 다 차면 늘려줄 것인지 퍼센트를 기입(기본 0.75) 생성자 HashSet hs = new HashSet(); 메소드 메소드 기능 add(val) 값 추가, 정렬 없이 내부 로직에 맞는 위치에 저장됨, 중복값을 추가할 경우 변동이 없습니다. addAll(hs2) 제공한 다른 컬렉션의 값을 합쳐줌, 중복된 값은 무시합니다. contains(val) 제공한 값이 Set에 있는지 여부를 확인하여 true / false 반환합니다. remo..

ArrayList 주요 메소드

List 배열과 같이 여러 데이터를 담을 수 있는 자료형입니다. 추가로 여러가지 메소드를 제공합니다. ArrayList al = new ArrayList(); al.add(1); al.add('a'); ArrayList import java.util.arrayList 생성자 new ArrayList() : 기본 크기가 10인 배열 생성합니다. new ArrayList() : 기본 크기를 지정하여 (배열이 다 차면 기본 크기만큼 사이즈가 증가합니다.) new ArrayList() : 배열 값의 타입을 지정해줍니다. ※ 재네릭(Generic) - 컬렉션 객체를 생성할 때 저장되는 데이터의 타입을 미리 지정하는 기능입니다. - 제네릭으로 지정한 타입 외에는 담길 수 없도록 합니다. 메소드 메소드 기능 add(..

Array 주요 메소드

Array import java.util.Arrays 메소드 메소드 기능 asList(arr) 배열을 ArrayList로 변환합니다. toString(arr) String으로 변환해줍니다.(배열에도 toString이 존재합니다.) sort(arr) 오름차순 정렬합니다. sort(arr, comparator) Collections.reverseOrder() 내림차순 정렬합니다. sort(arr, int start, int end) 인덱스의 시작과 끝을 정하여, start부터 end-1까지 오름차순 정렬합니다. sort(arr, int start, int end, comparator) 인덱스의 시작과 끝을 정하여, start부터 end-1까지 문자열을 내림차순 정렬합니다. copyOf(arr2, int ne..