Java 썸네일형 리스트형 [자바의 신] 어노테이션 어노테이션은 컴파일러에게 정보를 알려주거나, 컴파일 할때 와 설치(deployment)시의 작업을 지정하거나, 실행할때 별도의 처리가 필요할때 사용한다. 어노테이션은 클래스, 메소드, 변수 등 모든 요소에 선언할 수 있다. 자바에서 사용하기 위해 정해져 있는 어노테이션은 3개, 어노테이션을 선언하기 위한 메타 어노테이션은 4+1개가 있다. 먼저 사용하기 위해 정해진 어노테이션 3개는 다음과 같다.(JDK6 기준) @Override 해당 '메소드'가 부모 클래스에 있는 메소드를 오버라이드 했다는 것을 명시적으로 선언 만약 이 어노테이션을 쓰고 오버라이드 형식에 맞지 않게 코딩했다면 컴파일 에러 발생 @Deprecated 만들어진 클래스나 메소드가 더 이상 사용되지 않는 경우 컴파일러가 알려주는 용도 @Su.. 더보기 [자바의 신] 클래스 안의 클래스 자바에서는 클래스 안에 클래스를 Nested 클래스라고 부른다. 왜 클래스 안에 클래스가 있을까? 코드를 간단하게 하기 위해서 이다. 한 곳에서만 사용하는 클래스를 논리적으로 묶어서 처리할 필요가 있을때(Static Nested 클래스) 캡슐화가 필요할때, 즉 내부 구현을 감추고 싶을때(내부 클래스) 소스의 가독성과 유지보수성을 높이고 싶을때 Nested 클래스는 자바 기반의 UI를 처리할 때 사용자의 입력이나, 외부의 이벤트에 대한 처리를 하는 곳에서 많이 사용된다. Nested 클래스는 선언 방식에 따라서 두가지로 구분할 수 있고, inner 클래스는 이름이 유무에 따라서 다시 두가지로 나눌수 있다. Static Nested 클래스 inner 클래스 로컬 내부 클래스 익명 내부 클래스 Static N.. 더보기 [자바의 신] 예외 예외는 매우매우 중요하다. 예외를 모르면 자바를 모르는것과 같다. 예외를 생각하지 않고는 안전한 프로그램 개발이 불가능하다. 자바에서 예외는 우리가 예상한 혹은 예쌍치 못한 일이 발생하는 것을 미리 예견하고 안전장치를 하는것. try ... catch try 블록 안에 예외가 발생할 수 있는 문장을 묶어주고, catch 블록 안에 예외가 발생했을때 처리를 해준다. 반드시 모든 문장을 묶을 필요는 없고, 예외가 발생하는 부분만 묶어주면 된다. try ... catch 블록에서 예외가 발생하면 예외가 발생한 문장이후는 실행되지 않고, 바로 catch 블록으로 넘어간다. 반대로 try블록에서 예외가 발생하지 않으면, catch 블록은 실행되지 않는다. 주의할 사항 변수의 선언 try ... catch 블록도 .. 더보기 [자바의 신] 인터페이스와 추상클래스 인터페이스나 추상클래스는 하나의 기호다. 전원버튼의 모양을 보고 전자기기의 전원을 켜는 것과 같이 인터페이스나 추상클래스의 모양을 보면 어떻게 써야 할지 알 수 있다. 보통 설계 단계에서 인터페이스를 정의하고 개발단계에서 인터페이스를 구현한 클래스를 만든다. 중요한 것은 인터페이스를 구현한 클래스가 어떻게 되어있는지의 여부. 인터페이스나 추상 클래스의 메소드를 사용하는 사용자의 입장에서 내부 구현이 어떻게 되어 있는지는 별로 안궁금하고, 그냥 호출하고, 응답을 받으면 된다. 인터페이스와 추상클래스를 사용하는 이유 설계시 선언해 두면 개발할때 기능을 구현하는데만 집중할 수 있다. 개발자의 역량에 따른 메소드의 이름과 매개변수 선언의 격차를 줄일 수 있다. 공통적인 인터페이스와 추상클래스를 선언해 놓으면 선.. 더보기 [자바의 신] Object 사실 모든 자바 클래스의 부모는 java.lang.Object클래스 이다. extends 키워드가 없을때, 즉, 아무 클래스도 상속받지 않은 클래스는 모두 Object를 상속받은것이다. 그럼 extends 키워드가 붙은 클래스는 Object도 받고, 다른 클래스도 받은건가? 다중 상속은 안된다고 했던거 같은데.. 다중 상속은 안되지만, 여러 단계로 상속받을수 있다. 아래 그림을 보자. 왼쪽처럼 Child가 Parent와 Object를 동시에 상속받을수 없다. 하지만 오른쪽과 같이 Parent가 Object를 상속받고, Child가 Parent를 상속받는 형태로 상속 받는 것은 가능하다. 결국 Child도 Object의 변수와 메소드를 상속받은것 처럼 사용할 수 있다.(public, protected) 왜.. 더보기 [자바의 신] 상속 상속? 상속은 중요하다. 일단 자바에서 상속은 클래스를 선언할때 아래와 같이 extends 키워드를 쓴다. public class [작성할 클래스 이름] extends [상속받을 클래스 이름] 말로 풀어쓰면, "'내가 작성할 클래스(이하 B)'가 'extends 뒤에 있는 클래스(이하 A)'를 확장할꺼예요~" 정도가 되겠다. 그래서 어떻게 되는데요? 상속을 받으면 B는 A에 있는 자원들 중에서 접근제어자가 public, protected로 선언된 자원들(변수, 메소드)을 마치 자기가 가지고 있는 것 처럼 사용할 수 있다. private인 것들은 상속받은 클래스에서 사용할 수 없다. package com.molt.parent; public class A { public A(){ System.out.prin.. 더보기 [자바의 신] 접근제어자 4년 넘게 개발하면서 이제야 중요성을 인식하는 것중 하나가 바로 접근제어자이다. 이 접근제어자를 제대로 쓸 줄 알아야 정보은닉, 캡슐화 등 객체지향 프로그래밍의 주요 개념들을 제대로 사용할 수 있다고 생각한다. 자바의 접근제어자는 클래스, 메소드, 인스턴스 변수, 클래스 변수를 선언할때 사용한다. 접근제어자는 public, protected, package-private, private 4가지가 있다. 이중에서 protected와 private는 클래스 안에서만 쓸 수 있다. 클래스를 선언할때 쓸 수 없다. public 같은 클래스에서 접근 가능 같은 패키지에서 접근 가능 다른 패키지에서 접근 가능 상속받았을때 접근 가능 protected 같은 클래스에서 접근 가능 같은 패키지에서 접근 가능 상속받았을때.. 더보기 [자바의 신] 패키지 자바 개발을 하면 패키지를 참 많이 만든다. 자바에서 패키지는 그냥 폴더가 아니다. 패키지는 클래스를 분류해서 이름이 중복되지 않게 하고, 클래스의 역할을 규정해 혼동을 막는다. 패키지를 만들때 몇가지 주의사항이 있다. 패키지 이름은 java로 시작하면 안된다. 패키지 이름은 소문자로 지정해야 한다. 패키지 이름은 자바의 예약어를 사용하면 안된다. 주의사항을 기억하면서, 일단 패키지를 한번 만들어보자. javastudy폴더 아래 com 폴더를 만들고, 그 아래 molt 폴더를 만들겠다. javastudy > com > molt 폴더 아래 PackageTest.java 파일을 아래와 같이 만들자. package com.molt; public class PackageTest { public void prin.. 더보기 [자바의 신] 참조 자료형 - 메소드 참조 자료형의 중요한 내용중 하나인 메소드에 대해서 알아보자. 메소드 종료조건? 모든 문장이 실행되었을 때, return을 만났을 때 예외가 발생했을 때 모든 문장이 실행된것은 말 그대로 메소드의 중괄호 안에 모든 문장이 실행되었고, 더이상 실행할 문장이 없으면 메소드가 종료된다는 것이다. return은 뭘까? public class MethodTest { public static void main(String[] args) { } public int returnIntMethod() { int intValue = 100; return intValue; } public String returnStrMethod(){ String strValue = "스트링"; return strValue; } public .. 더보기 [자바의 신] 참조 자료형 - 생성자 자바에서 기본자료형을 제외한 모든 타입이 참조자료형이다. 참조 자료형은 객체를 초기화할때 new 키워드를 사용한다. (배열과 String은 좀 특이해서 new를 사용하지 않아도 객체를 생성, 초기화 할수 있지만, 이 두 가지를 제외한 모든 참조 자료형은 new를 사용해야한다.) 우리가 앞에서 만든 Bicycle 클래스도 참조자료형이다. 코드를 한번 보자. public class Bicycle { // 변수(상태) 시작 public String color;// 색상 public String grip;// 손잡이모양 public int speed;// 속도 public int distance;// 거리 public int weight;// 무게 // 변수(상태) 끝 public Bicycle(){ } // .. 더보기 이전 1 2 다음 목록 더보기