본문 바로가기

Language

Interface vs Abstract Interface 와 abstract * 공통점1) abstract와 interface는 그자체가 instance화 될수가 없다. 즉, TestInterface t = new TestInterface(), TestAbstract a = new TestAbstract(); 둘 다 컴파일을 해보면, 에러를 발생시킨다. 2) Prototype만 있고 Body가 없는 메소드를 멤버함수로 가진다. 소스1에서 보는 바와 같이 TestInterface, TestAbstract 는 함수 선언부는 존재하지만, 내용이 없는 함수들을 포함하고 있다. [소스1] public interface TestInterface { public static int num = 8; public void func1(); public void.. 더보기
중첩 클래스(Nested Class) [자바 4대 중첩 클래스] 자바 4대 중첩 클래스 1. 중첩 클래스 (Inner Class) □ 정의 - 하나의 클래스 내부에 또 다른 클래스가 내포되어 있는 상태. (클래스 관리의 효율을 높임.) □ 특징 - 중첩되는 클래스는 하나 이상 가능. - Outer 클래스 멤버를 Inner 클래스에서 사용 가능. - Outer 클래스에서 Inner 클래스 멤버 사용 불가능. (사용하고 싶으면 객체를 직접 발생 시켜야 함.) - 일반 중첩 클래스 내부에서는 static과 관련된 멤버를 선언할 수 없음. □ 형식 class Outer { 내용부; class Inner { 내용부; } } □ 중첩 클래스 객체 생성 Outer 객체1 = new Outer(); // Outer 클래스 객체 생성. Outer.Inner 객체2 = 객체1.new .. 더보기
JAVA 접근 제한자 (public, private, protected, default) 접근 제한자란?멤버들은 객체 자신들만의 속성이자 특징이므로 대외적으로 공개되는 것이 결코 좋은 것은 아닙니다.그런 이유로 프로그래머가 객체의 멤버들에게 접근 제한을 걸 수가 있는데 자바에서는 이를 접근 제한자라 합니다. 제한자 종류i) public : 모든 접근을 허용ii) protected : 같은 패키지(폴더)에 있는 객체와 상속관계의 객체들만 허용iii) default : 같은 패키지(폴더)에 있는 객체들만 허용iv) private : 현재 객체 내에서만 허용 접근제한자 사용- 클래스 : public, default- 생성자 : public, protected, default, private- 멤버변수 : public, protected, default, private- 멤버메소드 : public,.. 더보기
Java Reflection 개념 및 사용법 Java Reflection 정의 리플렉션이란 객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법을 말한다. 투영, 반사 라는 사전적인 의미를 지니고 있다. 스프링을 공부하다가 보면 BeanFactory 라는 Spring Container 개념을 학습하게 된다.이 BeanFactory는 어플리케이션이 실행한 후 객체가 호출 될 당시 객체의 인스턴스를 생성하게 되는데 그 때 필요한 기술이 Reflection이다.자바는 스크립트 언어가 아닌 컴파일 언어이다. 물론 .java -> .class -> 실행이라는 2단계의 메커니즘을 가지고 있지만 컴파일 언어로 분리하는 게 옳다. 원래 자바에서는 동적으로 객체를 생성하는 기술이 없었다. 그리고 동적으로 인스턴스를 생성하는 Reflection으로 그 역활을 대신.. 더보기
JAVA ThreadLocal JAVA ThreadLocal란? 각각의 Thread에서만 사용되는 전역 변수를 만들어 주는 개념이다. 때문에 각각의 Thread마다 다른 값을 사용 할 수 있다.스레드에서 변수가 임의로 공유되는 상황을 막기 위해서 자주 사용이 된다. -private static으로 선언-set과 get메소드로 사용됨-싱글턴 구현, 프로임워크의 환경변수 공유등에 많이 사용. ThreadLocal 은 전역변수는 아니지만 전역 변수처럼 동작하기 때문에 코드의 재사용성을 떨어트리고 부작용을 유발할 수 있다. 스레드 내보의 값과 값을 가지고 있는 객체를 연결해 스레드 한정 기법을 적용할수 있도록 도와주는 형식적인 방법으로 ThreadLocal이 있다.이 ThreadLocal은 호출하는 스레드마다 다른 값을 사용할 수 있도록 관.. 더보기
Java Code Convention Java Code Convention 1 - Introduction1.1 Why Have Code Conventions다음은 프로그래머에게 코드 컨벤션(code convention)이 중요한 몇가지 이유이다. • 소프트웨어가 살아있는 동안(lifetime) 드는 비용의 80%는 유지보수에 소요된다. • 어떤 소프트웨어라도 원래의 저작자에 의해서 계속적으로 유지보수 되는 경우는 거의 없다.• 코드 컨벤션은 소프트웨어의 가독성을 향상시키고, 엔지니어가 새로운 코드를 좀더 빠르고 더욱 완벽하게 이해할 수 있게 한다. • 자신의 소스 코드를 상품으로 내놓으려면, 그것이 자신의 다른 상품처럼 잘 패키징되고 명료한지 확인할 필요가 있다. 2 - File Names2.1 File Suffixes자바 소프트웨어는 다음.. 더보기
디자인패턴 정리 디자인 패턴(Design Pattern)디자인 패턴의 정의 -프로그래머들이 유용하다가 생각되는 객체들간의 일반적인 상호작용 방법들을 모은 목록-어떤 분야에서 계속 반복해서 나타나는 문제들을 해결해 온 전문가들의 경험을 모아서 정리한 것-여러 번 반복하여 사용할 수 있는 문제에 대한 솔루션을 기술한 것(Gamma) 디자인 패턴의 역사 -디자인 패턴의 연구는 1990년대 초반 Erich Gamma[1992]에 의해 시작-일반적으로 GoF(Gang of Four)의 분류가 많이 활용되고 있음.-23개의 일반적이고 유용한 패턴들을 제공-패턴을 사용하게 되면 이미 검증된 해결방안을 계속 재사용할 수 있음. 패턴의 구성요소(GoF) -패턴의 이름과 구분: 패턴을 부를 때 사용하는 이름과 패턴의 유형-문제 및 .. 더보기
Adapter vs Bridge, Composite vs Decorator vs Proxy 비교 구조 패턴은 코드와 객체를 구조화하기 위해 언어가 제공하는 아주 작은 범위의 개념을 이용하기 때문에 각 패턴의 구조가 비슷할 수밖에 없다. 이러한 패턴들의 차이점은 왜 이 패턴을 써야 하는가에 있다. Adapter vs Bridge Adapter 패턴과 Bridge 패턴은 둘다 다른 객체에 대한 직접 접근 대신에 다른 우회적 방법으로 접근함으로써 유연성을 증대시킨다. 두 패턴간의 가장 큰 차이는 목적이 무엇인가 하는 것이다. Adapter의 목적은 이미 존재하는 두 인터페이스간의 불일치를 해결하려는 것이다. 그러나 Adapter패턴은 어떤 인터페이스를 어떻게 구현하게 할 것인가라든가, 인터페이스와 구현을 독립적으로 발전시키는 방법은 무엇일까 등의 사항은 전혀 고려치 않는다. 이에 비해 Bridge 패턴의.. 더보기