목록분류 전체보기 (253)
bdfgdfg
패키지(package) 패키지는 클래스의 묶음. 패키지에는 클래스,인터페이스를 포함하며 서로 관련된 클래스들 끼리 그룹단위로 묶어 클래스를 효율적으로 관리할 수 있다. 또한 같은 이름의 클래스라도 서로 다른 패키지에 존재할 수 있어서 자신만의 패키지 체계를 유지하면서 다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다. 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리임. 사실 클래스의 실제이름(full name)은 패키지명을 포함한 것. -> ex) String클래스의 실제 이름은 java.lang.String. 즉 java.lang패키지에 속한 String 클래스. 즉 java.lang.String클래스는 물리적으로 ..
상속의 의미는 기존의 클래스를 재사용(물려받아) 새로운 클래스를 작성하는 것이다. 객체지향에서 상속은 코드의 재사용성과 중복을 제거하여 프로그램의 생산성과 유지보수성을 높인다. public class Child extends Parent { } 자바의 상속은 클래스명 뒤에 extends 키워드와 함께 부모 클래스명을 붙여준다. 자바 언어의 상속에서 주요 특징은 다음과 같음. 1. C++언어에서는 다중 상속을 허용하지만 자바에서는 허용하지 않음. (인터페이스 제외) 2. 클래스의 최상위 부모는 Object라는 클래스. 클래스가 상속 받는 상태가 아니라면 컴파일러가 자동으로 extends Object를 붙여준다. 오버라이딩 오버라이딩은 객체지향의 다형성 키워드와 연관된 키워드이며, 부모 클래스의 메소드를 자..
다시 개념을 정리해보기 위한 글 쓰기.. 우선 비동기/동기와 블로킹/논블로킹을 쉽게 이해할려면 관점을 분리해야한다. 동기/비동기 : 작업(Task)의 관점. (작업의 순서와 결과) 블로킹/논블로킹 IO : 쓰레드(Thread)의 관점. 블로킹/논블로킹은 쓰레드의 관점에 가깝다. 어느 파일 I/O, 소켓 I/O등 I/O 함수를 호출 시 쓰레드가 제어권을 계속해서 넘겨주느냐, 바로 반환받느냐의 차이. -> 즉 그 함수가 바로 리턴을 하느냐 안하느냐 라는 것 블로킹에서 호출된 함수가 동기방식이라면 보통 블로킹방식이기에 제어권을 가져가지만, 별도로 논블로킹 설정이 가능하다면 동기함수를 호출하더라도 제어권을 거의 바로 반환받을 수 있다. 위 그림이 가장 적절하게 설명한게 아닌가 싶다. 동기와 비동기는 작업의 관점..
멤버변수의 초기화 방법 1. 명시적 초기화 2. 생성자 3. 초기화 블럭 - 인스턴스 초기화 블럭 : Non-Static 멤버 변수를 초기화 하는데 사용. - 클래스(Static) 초기화 블럭 : Static 멤버 변수를 초기화 하는데 사용. 우선 명시적 초기화. public class TestClass { private int TestVar = 1; private String Teststr = new String("String"); } 위와 같이 클래스 변수내에서 선언과 동시에 초기화 값을 넣어준 경우를 명시적 초기화라고 한다. 다만 초기화 과정에서 좀 더 복잡하게 초기화를 해주어야할 경우 위와 같은 방식은 어렵다. 초기화 블럭 초기화 블럭에는 Non-static 멤버변수의 초기화를 하는 블럭과, St..