목록전체 글 (155)
Rootable의 개발일기
📌 추상 클래스란 추상 클래스는 클래스 내 추상 메서드가 하나 이상 포함되거나 abstract로 선언된 클래스를 말한다. 추상 메서드는 자손 클래스에서 완성해야 하는 메서드로 확장, 이용의 개념으로 볼 수 있다. 그래서 추상 클래스는 미완성 설계도라고도 표현한다. 상속을 위한 클래스이므로, 객체를 생성할 수 없다. 추상 클래스는 자손 클래스에서의 확장을 전제로 한 미완성 설계도 📌 인터페이스란 추상 메서드 또는 상수만으로 구성된 클래스(Java 8부터는 static 메서드와 default 메서드도 포함)로, 마찬가지로 추상 메서드는 자손(구현) 클래스에서 완성해야 하는 메서드다. 그래서 인터페이스는 기본 설계도라고 할 수 있으며, 중요 특징으로 다중 상속(구현)이 가능하다. 인터페이스는 다중 상속이 ..
📌 final 변수 final 키워드가 붙은 변수는 초기화 후 변경할 수 없다. final int a = 10; a = 50; //compile error 📌 final arguments (인자) 인자를 선언할 때 final 키워드를 붙일 수 있다. final로 선언된 인자는 메서드 내에서 변경할 수 없고, 읽기만 가능하다. public void method(final String arg) { System.out.println(arg); //arg = "not changing"; compile error } 📌 final class 클래스에 final을 붙이면 다른 클래스가 상속할 수 없는 클래스가 된다. final class A { ... } class B extends A { //compile err..
Java 7에 추가된 구문으로, try-catch-finally 문을 통한 자원 해제 코드가 길어지고 지저분해졌던 점을 개선했다. 자바에서 외부자원에 접근하는 경우, 외부자원을 사용한 뒤 반드시 닫아줘야 한다. try-catch-finally문은 아래와 같이 해제한다. FileOutputStream out = null;try { out = new FileOutputStream("exFile.txt"); ...} catch (FileNotFoundException e) { e.printStackTrace();} finally { if (out != null) { try { out.close(); } catch (IOException e) {..
📌 리플렉션(Reflection)이란 구체적인 클래스 타입을 알지 못해도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API 🔎 예시 아래 코드처럼 Object라는 클래스로 A라는 클래스를 다형성을 통해 받을 수 있다. 하지만 Object 클래스의 참조 변수 o는 A의 특정 메서드에 접근할 수 없다. Object o = new A();o.function(); //Compile error 그 이유는 자바는 컴파일 타임에 타입을 결정하는데, 이미 컴파일 시점에 결정된 타입에 대한 인스턴스 변수와 메서드만 사용할 수 있기 때문이다. 하지만 Reflection API가 있어 구체적인 정보를 모르는 클래스에 접근할 수 있다. Class A_class = A.class;Method fun..