목록분류 전체보기 (478)
한 걸음 두 걸음
예외처리란? 메소드가 해야 할 일을 수행할 수 없는 상황을 처리하는 것. 예외란, 복구가 가능한 에러를 지칭합니다. (HW전원이 나가는 등의 에러는 복구가 불가능한 에러입니다.(버그)) 자바에서는 예외가 발생했을 경우 이를 처리하는 과정을 분리하여 사용하는 방식을 씁니다. 자바는 에러도 클래스로 구현되어 있습니다. 메소드 안에서 오류가 발생하면 해당 오류를 설명하는 예외 객체를 만들어 런타임 시스템으로 넘깁니다. 예외 계층구조 / checked Exception Object-Throwable(예외 최상위 클래스)는 Error와 Exception 자식 클래스를 가집니다. Error는 복구할 수 없으므로(IOError) Exception 처리를 하는 방법을 공부해보겠습니다.(단, RuntimeExceptio..
내부클래스란? 하나의 클래스 안에 다른 클래스를 정의한 클래스입니다. public class A{ //외부클래스 private class InnerA{ //내부클래스, 어디에 작성해도 상관 없습니다. //내부클래스에서 외부클래스의 함수나 변수에 자유롭게 접근합니다. } //외부클래스에서는 내부클래스의 객체를 만들어 사용합니다. }내부 클래스는 외부 클래스의 멤버나 함수에 자유롭게 접근 가능하며, 대부분 private로 해당 외부 클래스 내에서만 사용하는 편입니다. 때문에 내부 클래스의 객체는 외부클래스에서 만들어져 사용됩니다. 사용이유 그래픽 이벤트 처리에 유용하다. 항상 함께 사용되는 두 클래스가 있다면, 같이 놔두는 것이 사용하는데 더 효율적이다. 무명클래스란? 클래스 이름이 없는 클래스로, 바디만 ..
instanceof 객체의 타입이 실제로 무엇인지 알아내거나 형변환이 가능한지 알아야 하는 경우, instanceof 연산자를 사용합니다. A(객체) instanceof B(타입클래스) 더 명확하게 이야기하자면, 자기자신의 클래스 객체인가 자식클래스의 객체인가 확인하기 위해 사용합니다. instanceof 연산자는 자식 instanceof 부모 관계이면 true 부모 instanceof 자식 관계이면 false를 반환합니다. 동물을 상속받는 개, 고양이, 다람쥐 클래스가 있을 때, Class Animal { public int a; Animal(){ a = 10; } } Class Cat extends Animal{ public int b; Cat(){ b = 20; } }(예시, 동물 / 고양이클래스)..
람다표현식이란? JAVA8에서 새롭게 등장한 함수형 프로그래밍 기법입니다. 이를 통해 JAVA를 보다 간결하게 작성할 수 있게 되었습니다. 람다 표현식은 함수형 인터페이스와 호환됩니다. Interface의 형태를 빌려 함수를 변수처럼 사용할수 있는 개념입니다. 함수형 인터페이스란? 추상 메소드 하나만 갖고 있는 인터페이스를 이르는 말합니다. 1. Comparator 인터페이스의 추상메소드 ``` int compare(param1, param2); ``` Comparator인터페이스에는 데이터의 대소를 비교하는 추상메소드가 있습니다. 임의로 한 개의 클래스를 만들어보겠습니다. class BigNum implements Comparator { public int compare(int num1, int num..
다형성 다형성이란? 같은 함수를 불러도, 객체의 타입에 따라 다른 결과를 얻는 것입니다. 이는 형변환과 관련이 있습니다. 상향 형변환 동물을 상속받는 개, 고양이, 다람쥐 클래스가 있을 때, 동물 d = new 동물();은 당연히 가능하지만, 동물 d = new 고양이();는 당연하지 않아보이지만 가능하다. 이 떄 발생하는 것이 바로 상향형변환입니다. 부모클래스의 참조변수(d)로 자식클래스의 객체를 참조했기 때문에, 부모클래스가 자식클래스에게 물려준 것은 사용가능하지만, 자식이 확장해서 만든(부모에게는 없는) 것들에는 접근할 수 없습니다. 예를 들어, Class Animal { public int a; Animal(){ a = 10; } } Class Cat extends Animal{ public in..
인터페이스 인터페이스 개념 인터페이스란 추상클래스의 확장개념으로, 서비스 공급자(서버)와 사용자(클라이언트)간의 계약을 표현하는 것입니다. 인터페이스의 모든 필드(변수)는 모두 final static이 붙은 상수로 간주됩니다.(생략되어 표시되지 않습니다.) 메소드는 추상메소드만 구현할 수 있었으나, JAVA9부터는 구현메소드와 정적메소드, private 메소드가 작성될 수 있게 되었습니다.(private메소드는 default메소드에서 호출하여 사용할 수 있습니다.) public interface A{ double MAX = 10; //상수필드 //추상메소드 public void print(); public void draw(int a ); //디폴트메소드 : 구현메소드를 작성하기 위햐서는 default를..
자바의 모든 클래스는 Object클래스를 상속받습니다.(명시적으로 선언하지 않으면 모든 클래스는 Object클래스를 상속받습니다.) 즉, Object class는 루트클래스입니다. 이는 java.lang패키지에 들어있는 클래스입니다. 그렇다면 Object의 메소드를 활용할 수 있을텐데, 어떤 메소드가 있는지 확인해볼까요? String toString() 객체의 클래스명과 해시코드를 문자열로 반환합니다. 재정의를 통해 클래스의 변수 상태를 확인할 때 많이 씁니다.(클래스 내에서 this()로 내부 클래스를 호출하거나 객체를 출력시키면 toString이 호출됩니다. 때문에 디버깅할 때 자주 사용합니다.) boolean equals(Object) 파라미터로 오는 Object와 자신의 객체가 같은지 확인하는 함..
추상클래스 abstract 키워드를 활용한 클래스, 최소한 하나 이상의 abstract메소드를 갖는 클래스를 말합니다. (추상메소드가 아닌 메소드도 가질 수 있습니다.) public abstract class Car { }; //세미콜론을 붙여주어야합니다. 이는 객체 생성이 불가능합니다. 추상메소드 abstract 키워드를 활용한 메소드로, 바디에 구현하는 코드가 없습니다. public abstract class Car { public abstract void move(); //구현되는 코드가 없습니다. }추상클래스는 아직 완성되지 않은 클래스이기 때문에 추상클래스로 객체를 만들 수 없고, 추상 클래스를 상속받아서 만든 클래스의 객체를 만들 수 있습니다. 상속받은 클래스(concrete class)에서는..