본문 바로가기

Programming/JAVA

(22)
자바, final 키워드 final 키워드 등장 가능한 곳: 클래스, 변수, 메서드 final 클래스 위와 같이 class 앞에 final이 붙는 키워드로, 상속을 허락하지 않는다는 의미이다. 만약 다른 클래스에서 상속을 받는다면 에러가 발생한다. final 변수 final 변수는 변경 불가능한 상수가 된다. 정적 상수 ( s_var1, s_var2 ) : 선언과 동시에 또는 static 블록 내부에서 초기화 가능 객체 상수 ( var1, var2 ) : 선언과 동시에 또는 객체 생성자 혹은 인스턴스 블록에서 초기화 가능 지역 상수 ( l_var1, l_var2 ) : 선언과 동시에 또는 최초로 한 번만 초기화 가능 final 메서드 오버라이딩. 즉, 재정의가 금지된다.
자바의 static 블록 클래스 생성 시의 실행 블록, static 블록 클래스가 T메모리 영역 중 스태틱 영역에 배치될 때 실행되는 코드 블록이 있다. 바로 static 블록이다. 이전에 포스팅을 하였는지 기억이 가물가물하나, static 키워드가 붙은 정적 함수, 정적 메서드는 스태틱 영역에 할당된다. 이로 모든 메서드에서 접근할 수 있다. 예제 코드를 한 번 보겠다. 가장 큰 차이점은 이전 포스팅에서 객체 생성자 메서드로 선언했다면, 이번에는 static이라는 예약어 뒤에 바로 구현했다는 것이다. 해당 클래스의 객체 생성자 메서드로 인스턴스를 생성한 뒤 main 메서드에서 실행하면 [ 동물 클래스 ]가 Console 창에 출력됨을 확인할 수 있다. ( 편의상 main method 코드는 run 메서드에 작성하고 있습니다. ..
자바의 생성자(Constructor) : new 생성자 클래스의 인스턴스. 즉, 객체를 생성할 때마다 new 키워드를 사용한다. Animal animal = new Animal( ); 이렇게 말이다. ' new 클래스명( ) '을 자세히 살펴보면 열고 닫는 소괄호가 존재한다. 이는 한 마디로 ' 클래스명( ) ' 또한 메서드임을 이야기한다. 객체 생성자 메서드 : 반환값이 없고 클래스명과 동일한 이름의 메서드로 객체를 생성하는 메서드임 객체 생성자 메서드의 경우 매개인자가 아무것도 없는 default 생성자를 자바에서 자동으로 생성한다. 하지만, 만약 인자 값을 요하는 생성자 메서드를 선언할 경우, default 생성자는 따로 명시해야 선언된다. 위 예시 코드를 보면, Animal 클래스 내에는 아무것도 선언되어 있지 않지만 Driver 클래스에서 객..
추상 메서드와 추상 클래스 ( abstract ) ◼︎ abstract 키워드 - 추상 메서드와 추상 클래스 추상 메서드( abstract method ) 간단하게 이야기하자면, 선언부는 존재하나 구현부가 없는 메서드를 칭한다. 추상 메서드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스( Abstract Class )로 선언해야 한다. 추상 메서드 없이도 추상 클래스 선언이 가능하다. 다시 한 번 정리하자면, 메서드만 선언된 것으로, 몸체 ' { } '사이에 코드가 없으며, 상속 받는 클래스에게 강제해 메서드를 구현하도록 하는 것이다. 하지만 중요한 사실이있다. 추상 클래스는 인스턴스를 생성할 수 없는 클래스이다. 이처럼 말이다. 그 이유는 클래스가 미완성이기 때문이다. 추상 클래스는 내부적으로 구현되지 않은 클래스이다. 무슨 말이냐. Animal ..
자바와 객체지향 4대 특성 ( 캡슐화, 상속, 추상화, 다형성 ) 객체 지향은 인간 지향이다. 기존 구조적 프로그래밍 언어는 복잡한 문제도 작은 문제로 분할해 하나씩 정복해 가다보면 해결된다는 전략이다. 즉, 구조적 프로그래밍의 "함수"는 코드를 논리적 단위로 구분하고 분할해 정복하는 것이다. 객체 지향의 출발은 '우리가 주변에서 사물을 인지하는 방식대로 프로그래밍'하는 것이다. 0과 1로 대변되는 기계에 맞춰 사고하던 방식을 버리고 현실세계를 인지하는 방식으로 프로그램을 만들기에, 객체 지향은 직관적이다. 객체 지향의 큰 그림은 아래와 같다. 세상에 존재하는 모든 것은 사물. 즉, 객체이다. 각각 사물은 고유하다. 사물은 속성을 갖는다. 사물은 행위를 한다. 사물을 하나하나 이해하기보다 사물을 분류(class)해서 이해하는 것이 인간의 인지법이다. 직립보행을 하며 말..
객체 지향 설계 5원칙, SOLID 원칙 [ ※ 구체적 내용은 스터디 주차에 맞추어 추가할 예정 ] 객체 지향 언어 특성을 요리에 비유해보겠다. 객체 지향 4대 특성인 [ 상속, 캡슐화, 추상화, 다형성 ]이 요리도구라면, 객체 지향 설계 5원칙은 [ 요리 도구 사용법 ]이며, 디자인 패턴은 [ 레시피 ] 이다. 정리하자면 자바의 4가지 특성을 사용한 SOLID 원칙에 기반해 설계된 것이 디자인 패턴이라고 보면 된다. SOLID 원칙 단일 책임 원칙 [ SRP: Single Responsibility Principle ] 클래스 변경 이유는 오직 하나라는 것. 즉, 하나의 클래스는 하나의 책임 [ = 목적 ]만 가지며, 책임[ = 역할 ]을 분리한다는 것임. 개방 폐쇄 원칙 [ OCP: Open Closed Principle ] 엔티티의 확장은..