일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Super
- 자바
- 익명함수
- final 클래스
- Anonymous Functions
- final
- annotation
- 디코딩
- 화살표 함수
- 라우터
- final 메소드
- 어노테이션
- 패키지
- import
- 인코딩
- 문자집합
- Arrow function
- node
- 즉시 실행 함수
- 메소드 재정의
- 노드
- Override
- 클래스
- package
- 유니코드
- 객체지향 #객체지향 특징
- 자바의 특징
- 생성자
- 기본 생성자
- router
- Today
- Total
목록JAVA (19)
개인 공부 블로그
자바 컴파일러 : 자바 소스코드를 JVM이 이해할 수 있는 자바 바이트 코드로 변환해줌 자바 바이트 코드 JVM이 이해할 수 있는 언어로 변환된 자바 소스코드를 의미. 확장자는 .class 이다. 자바 바이트 코드는 JVM이 설치되어 있으면 어떤 운영체제에서라도 실행될 수 있다. - 바이트 코드 : 고급 언어로 작성된 소스 코드를 가상머신이 이해할 수 있는 중간 코드로 컴파일한 것. 자바 가상 머신(JVM) 자바 바이트 코드를 실행시키기 위한 가상의 기계. 자바로 작성된 모든 프로그램은 자바 가상 머신에서만 실행될 수 있고 운영체제가 달라도 JVM만 설치되어 있으면 프로그램이 동작할 수 있다. 하지만 JVM은 운영체제에 종속적이어서 각 운영체제에 맞는 JVM을 설치해야 한다. 출처 https://tcps..
프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것. 자동 타입 변환은 아래와 같은 조건에서 일어남. 부모클래스 변수 = 자식클래스 타입; Class Animal { ... } Class Cat extends Animal { ... } 생략 ... Cat cat = new Cat(); Animal animal = cat;// Animal animal = new Cat()도 가능. cat과 animal 변수는 타입만 다를 뿐, Cat 객체를 참조한다. 부모인 Animal 객체를 참조하는 것이 아님. - 바로 위의 부모가 아니더라도 상속 계층에서 상위 타입이면 자동 타입 변환이 일어날 수 있다. - 부모 타입으로 자동 타입 변환된 이후에는 변수는 자식 객체를 참조하지만 부모 클래스의 필드, 메소드만 접..
protected의 접근 제한 범위는 같은 패키지에 소속된 클래스이거나 자식 클래스이다. protected 클래스를 상속받은 자식클래스는 부모 클래스의 필드, 생성자, 메소드에 접근이 가능하다. 단 new 연산자를 사용해 생성자를 직접 호출할 수는 없고, 자식 생성자에서 super()로 호출할 수 있다.
final 키워드가 클래스, 메소드 선언 시에 지정되면 상속과 관련이 있다. 상속할 수 없는 final 클래스, final 메소드 클래스에 final을 선언하면 이 클래스는 최종적인 클래스이므로 상속할 수 없는 클래스가 된다. 메소드에 final 키워드를 붙이면 이 메소드는 최종적인 메소드이므로 오버라이딩할 수 없는 메소드가 된다.
메소드 재정의(@Override) 자식 클래스에서 상속된 메소드를 재정의 하는 것. 메소드가 오버라이딩되면 부모의 메소드는 숨겨지기 때문에 자식 객체에서 메소드를 호출하면 오버라이딩된 자식 메소드가 호출된다. @Override 어노테이션은 생략해도 되나 붙여주면 컴파일러가 이 메소드가 정확히 오버라이딩 된 것인지 체크해서 개발자의 실수를 줄여줌. 부모 메소드 호출(super) 오버라이딩 되면 부모 메소드가 숨겨지는데, 자식 클래스 내부에서 오버라이딩된 부모 클래스의 메소드를 호출해야 하는 상황에는 super 키워드를 붙여 호출할 수 있다. super는 부모 객체를 참조하고 있어 부모 메소드에 직접 접근할 수 있다.
부모 클래스의 멤버를 자식 클래스에게 물려줄 수 있는데 이것을 상속이라고 한다. - 이미 잘 개발된 클래스를 재사용하여 새로운 클래스를 만들기 때문에 코드의 중복을 줄여줌. - 자바는 다중상속을 허용하지 않음. 부모 생성자 호출 부모 없는 자식이 있을 수 없듯이 자식 객체를 생성하면 부모 객체가 먼저 생성되고 자식 객체가 생성됨. 부모 생성자는 자식 생성자의 맨 첫 줄에서 호출된다. 생성자가 명시적으로 선언되지 않으면 컴파일러가 기본 생성자를 생성한다. public CellPhone() { super(); } super()는 부모의 기본 생성자를 호출한다. 명시적으로 부모 생성자를 호출하고 싶으면 아래와 같이 작성. 자식클래스( 매개변수선언, ...){ super( 매개값, ...); } 만약 부모클래스..
어노테이션은 메타데이터(metadata)라고 볼 수 있다. 애플리케이션이 처리해야 할 데이터가 아니라, 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지를 알려주는 정보. 용도 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공 (대표적인 예 : @Override) 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보 제공 실행 시(런타임 시) 특정 기능을 실행하도록 정보를 제공 어노테이션 타입 정의와 적용 public @interface AnnotationName { 타입 elementName() [default 값]; } - @interface를 사용하여 어노테이션을 정의한다. - 어노테이션은 엘리먼트(element)를 멤버로 가질 수 있다. 각 엘리먼트는 ..
- 패키지의 물리적인 형태는 파일 시스템의 폴더이다. - 클래스를 유일하게 만들어주는 식별자 역할. 클래스명이 같아도 패키지가 다르면 다른 클래스이다. - 클래스의 전체 이름은 "패키지명+클래스명"이다. - 패키지가 중요한 이유는 클래스만 따로 복사해서 다른 곳으로 이동하면 클래스는 사용할 수 없기 때문. 클래스를 이동할 경우에는 패키지 전체를 이동시켜야 함 패키지 선언 - 패키지는 클래스를 컴파일하는 과정에서 자동적으로 생성되는 폴더이다. - 이클립스는 src에 있는 모든 내용을 컴파일해서 bin 폴더에 생성시킨다. import문 같은 패키지에 속하는 클래스들은 다른 클래스들을 사용가능 다른 패키지에 속하는 클래스를 사용하려면 두 가지 방법 중 하나를 선택해야 함 1) 패키지와 클래스를 모두 기술 2)..
final 필드 초기값이 저장되면 이것이 최종적인 값이 되어 프로그램 실행 도중에 수정할 수 없다는 것. - final 필드에 초기값을 줄 수 있는 방법 1) 필드 선언 시 2) 생성자에서 만약 초기화되지 않은 final 필드를 그대로 남겨두면 컴파일 에러가 발생한다. 상수 (constant) 불변의 값을 저장하는 필드를 자바에서 상수라고 한다. final 필드를 상수라고 하지 않음. 불변의 값은 객체마다 저장할 필요가 없는 공용성을 띠고 있고, 여러가지 값으로 초기화될 수 없기 때문에. -> 상수는 staic이면서 final이어야 한다. static final 타입 상수 [= 초기값]; static final 필드는 객체마다 저장되지 않고, 클래스에만 포함된다. 그리고 한 번 값이 초기화되면 변경할 수..
정적멤버 - 클래스에 고정된 멤버로 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. - 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 한다. 정적 멤버 선언 - static - 필드와 메소드 선언 시 static 키워드를 붙인다. - 정적 멤버는 클래스 로더가 클래스(바이트 코드)를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리됨. 따라서 클래스의 로딩이 끝나면 바로 사용할 수 있다. - 객체마다 가지고 있어야 할 데이터라면 인스턴스 필드로 선언, 그렇지 않은 공용적인 데이터라면 정적 필드로 선언하는 것이 좋다. 메소드는 인스턴스 필드를 이용해서 실행해야 하면 인스턴스 메소드로 선언하고 인스턴스 필드를 이용하지 않는다면 정적 메소드로 선..