목록Tutorials/Java (15)
KoreanFoodie's Study
타입 변환과 다형성 (Polymorphism) 다형성은 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다. 자동 타입 변환(Promotion) 자동 타입 변환의 개념은 자식은 부모의 특징과 기능을 상속받기 때문에 부모와 동일하게 취급될 수 있다는 것이다. // Vehicle 자동 타입 변환이 발생한다! 즉, 매개 변수의 타입이 클래스일 경우, 해당 클래스의 객체뿐만 아니라 자식 객체까지도 매개값으로 사용할 수 있다! 매개값으로 어떤 자식 객체가 제공되느냐에 따라 메소드의 실행 결과는 다양해질 수 있다(매개 변수의 다형성). 자식 객체가 부모의 메소드를 재정의(오버라이딩)했다면 메소드 내부에서 오버라이딩된 메소드를 호출함으로써 메소드의 실행 결과는 다양해진다. 강제 타입 변환 강제 ..
어노테이션 어노테이션은 메타데이터라고 볼수 있다. @AnnotationName 어노테이션은 다음 세 가지 용도로 사용된다. 1. 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공 2. 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공 3. 실행 시(런타임 시) 특정 기능을 실행하도록 정보를 제공 대표적으로는 @Override가 있다. (상속 메소드 재정의 시) 어노테이션 타입 정의와 적용 어노테이션 타입의 정의는 인터페이스를 정의하는 것과 유사하다. 다음과 같이 @interface를 사용해서 어노테이션을 정의하며, 그 뒤에 사용할 어노테이션 이름이 온다. public @interface AnnotationName { 타입 elementName() [default 값]..
패키지 자바에서는 클래스를 체계적으로 관리하기 위해 패키지를 사용한다. 패키지의 물리적인 형태는 파일 시스템의 폴더이다. 패키지는 단순히 파일 시스템의 폴더 기능만 하는 것이 아니라 클래스의 일부분이다. 패키지는 클래스를 유일하게 만들어주는 식별자 역할을 한다. 패키지는 클래스를 유일하게 만들어주는 식별자 역할을 한다. 클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식한다. 클래스의 전체 이름은 "패키지명+클래스명"인데, 패키지가 상/하위로 구분되어 있다면 도트(.)를 이용해 표현한다. 상위패키지.하위패키지.클래스 클래스를 이동시킬 때는 패키지 전체를 이동시켜야 한다. 즉, myPackage 내의 myClass를 yourPackage로 옮긴다면, 해당 클래스는 사용할 수 없게 된다! 패키지 ..
정적(static) 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 클래스가 메모리로 로딩되면 정적 멤버를 바로 사용할 수 있는데, 클래스 이름과 함께 도트(.) 연산자로 접근한다. int a = myClass.value; myClass.doSomething(a); 정적 초기화 블록 정적 필드는 다음과 같이 필드 선언과 동시에 초기값을 주는 것이 보통이다. 그러나 계산이 필요한 초기화 작업의 경우, 정적 블록(static block)을 사용할 수 있다. static { ... } 정적 블록은 클래스가 메모리로 로딩될 때 자동적으로 실행된다. 정적 블록은 클래스 내부에 여러 개가 선언되어도 상관없고, 선언된 순서대로 실행된다. public class TV..
데이터 타입 데이터 타입은 primitive type과 reference type(참조 타입)으로 나뉜다. 참조 타입이란 객체의 번지를 참조하는 타입으로, 배열, 열거, 클래스, 인터페이스 타입이 이에 해당된다. 자바는 배열의 주소를 스택 영역에, 실제 데이터 값은 힙 영역에 할당한다. 메모리 사용 영역 JVM은 운영체제에서 할당받은 메모리 영역(Runtime Data Area)를 다음과 같이 구분해서 사용한다. 1. 메소드 영역 : 코드에서 사용되는 클래스(~.class)들을 클래스 로더로 읽어 클래스별로 런타임 상수풀(runtime constant pool), 필드(fiedl) 데이터, 메소드(method) 데이터, 메소드 코드, 생성자(constructor) 코드 등을 분류해서 저장한다. 메소드 영..