JAVA/JAVA 기본정리 18

인터페이스(interface)

📌 인터페이스 (interface) : 인터페이스는 일종의 추상클래스이다. 오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외 다른 요소는 허용하지 않는다. 추상클래스를 부분적으로만 완성된 '미완성 설계도'라고 한다면, 인터페이스는 구현된 것은 아무것도 없고 밑그림만 그려져 있는 '기본설계도'라 할 수 있다. 인터페이스 작성방법 interface 인터페이스이름{ public static final 타입 상수이름 = 값 ; public abstract 메서드이름 (매개변수목록); } - 접근제어자로 public 또는 default를 사용할 수 있다. 인터페이스 제약사항 더보기 1. 모든 멤버변수는 public static final이어야 하며, 생략할 수 있다. 2. 모든 메서드는 public ab..

추상클래스 (abstract class) / 추상 메서드 (abstract method)

📌 추상클래스 (abstract class) : 미완성된 클래스 추상클래스로 인스턴스를 생성할 수 없다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 추상클래스 자체로는 클래스로서의 역할을 다 못하지만, 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서 중요한 의미를 갖는다. 새로운 클래스를 작성할 때 아무 것도 없는 상태에서 시작하는 것보다는 완전하지는 못하더라도 어느정도 틀을 갖춘 상태에서 시작하는 것이 나을 것이다. 추상 클래스 선언하는 방법 - 클래스 선언부의 abstract를 보고 이 클래스에는 추상메서드가 있으니 상속을 통해서 구현해주어야 한다고 쉽게 알 수 있다/ abstract class 클래스 이름{ ... } 추상클래스에도 생성자가 있으며, 멤버변수와 메..

다형성(polymorphism)

📌 다형성? : 여러 가지 형태를 가질 수 있는 능력 상속과 함께 객체지향개념의 중요한 특징이며, 상속과 깊은 관계가 있다. 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 조상 클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다. ⚠️ 인스턴스 타입과 일치하는 참조변수를 사용하면 인스턴스의 멤버들을 모두 사용할 수 있을 텐데 왜 조상타입의 참조변수를 사용해서 인스턴스의 일부 멤버만을 사용하도록 하는 것일까? - 어떤 참조변수를 사용하느냐에 따라 사용할 수 있는 멤버의 개수가 다르다. - 또한 조상클래스와 자손클래스에 동일한 멤버변수가 정의되어있다면, 어떤 참조변수를 사용하느냐에 따라 서로 다른 결과를 얻는다. (참조변수와 인스..

제어자/ static / final/ abstract / public / protected/ default / private

제어자 ( modifier) : 클래스, 변수, 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 접근제어자와 그 외의 제어자로 나눌 수 있다. 접근 제어자 : public, protected, default , private 그 외 : static , final, abstract, native, transient, synchronized, volatile, strictfp static : 공통적인, 클래스의 static 은 '클래스의' 또는 '공통적인'의 의미를 가지고 있다. 클래스변수(static변수)는 모든 인스턴스가 공유하기 때문에, 인스턴스에 관계없이 같은 값을 갖는다. static 이 붙은 멤버변수와 메서드는 인스턴스를 생성하지 않고도 사용할 수 있다. 인스턴스 메서드..

오버라이딩(overriding) / 오버로딩 (overloading) / super / super()

오버라이딩 (overriding) : 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것 상속받은 메서드를 자손 클래스에 맞게 변경하는 경우, 조상의 메서드를 오버라이딩 한다. override : ~위에 덮어쓰다 (overwrite) class Point{ int x; int y; String getLocation() { return "x :" + x + ", y" + y; } } class Point3D extends Point{ int z; //오버라이딩 String getLocation() { return "x :" + x + ", y" + y + ", z" + z; } } 오버라이딩의 조건 자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와 1. 이름이 같아야 한다. 2. 매개변수가..

상속(inheritance) / 포함(Composite) 관계

상속 : 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 장점 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성을 높이고 유지보수를 편리하게 한다. 사용법 - extends 상속 받고자하는 클래스명 - 상속을 받는다 = 조상클래스를 확장한다 => extends class Parent {...} class Child extends Parent {...} 위 두 클래스는 서로 상속관계에 있다고 하며, 상속해주는 클래스를 '조상클래스'라 하고 상속받는 클래스를 '자손클래스'라고 한다. 조상 클래스 : 부모(parent)클래스, 상위(super)클래스, 기반(base)클래스 자손 클래스 : 자식(child)클래스, 하위(sub)클래스, 파생된(derived)클래스 Child클래스는 Par..

열거형(Enums)

열거형 : 서로 관련된 상수를 편리하게 선언하기 위한 것 열거형이란 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할때 사용하면 유용하다. jdk 1.5부터 추가되었다. class Card{ static final int CLOVER= 0; static final int HEART= 1; static final int DIAMOND= 2; static final int SPADE= 3; static final int TWO=0; static final int THREE =1; static final int FOUR = 2; final int kind; final int num; } class Card{ enum Kind { CLOVER, HEAR, DIAMOND, SPACE } //열..

JVM의 메모리구조

JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당박도 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. JVM은 3가지 주요 영역으로 나뉜다. 1. Method Area 2. Call Stack 3. heap 1. 메서드 영역 (method area) - 프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스파일 (*.class)을 읽어서 분석하여 클래스에 대한 정보(클래스데이터)를 이곳에 저장한다. 이 때, 그 클래스의 클래수변수도 이 영역에 함께 생성된다. 2. 힙 (Heap) - 인스턴스가 생성되는 공간. 프로그램 실행 중 인스턴스는 모두 이곳에 생성된다. 즉, 인스턴스 변수들이 생성되는 공간이다. 3. 호출스택(call stack 또는 execut..

Comparator/ Comparable / Sort / 내림차순

sort 메소드를 통해 내림차순에 대해서 알아보다가 여기까지왔다.. Arrays.sort(배열이름) Collections.sort(리스트이름) 위의 두 배열은 오름차순이 기본이다. 그런데 오름차순이 아닌 내림차순이 하고싶다면? Comparable / Comparator * Comparable : 기본 정렬기준을 구현하는데 사용 (ex. 오름차순 기본의 정렬 사용. sort() ) - compareTo(Object o) * Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때 사용 -> 내림차순 정렬 혹은 다른기준으로 정렬할 때 사용 - compare(o1, o2) compare()과 compareTo()는 두 객체를 비교한다는 같은 기능을 목적으로 고안된 것. : 비교하는 객체가 같..

HashMap

HashMap은 Map을 구현했으므로 Map의 특징인 키(key)와 값(value)을 묶어서 하나의 데이터로 저장한다는 특징을 갖는다. 해싱(hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 보인다. HashMap은 키와 값을 각각 Object타입으로 지정한다. 키(key) : 컬렉션 내의 키 중에서 유일해야 한다. 값(Value) : 데이터의 중복을 허용한다. Set entrySet() : HashMap에 저장된 키와 값을 엔트리(키와 값의 결합)의 형태로 Set에 저장해서 반환. Object get(Object key) : 지정된 키(key)의 값(객체)를 반환. Set keySet() : HashMap에 저장된 모든 키가 저장된 Set을 반환. Collection..