본문 바로가기

Programming/Java83

[Java] - 예외처리를 위한 오류 알기 출처 : 자바의 정석 프로그램 오류 프로그램 실행 중 어떤 원인 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이런 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 오류의 종류 발생 시점에 따라 나눌 수 있다. 컴파일 에러 컴파일할 때 발생하는 에러 런타임 에러 프로그램의 실행 도중에 발생하는 에러 논리적 에러 컴파일도 잘 되고 실행도 잘 되지만 의도한 것과 다르게 동작하는 것 런타임 에러를 방지하기 위해서는 프로그램의 실행 도중 발생할 수 있는 모든 경우의 수를 고려하여 이에 대한 대비를 하는 것이 필요하다. 단순 예제 코드를 짤 때는 예외처리 중요성을 크게 느끼지 못할 수 있다. 그러나 프로젝트를 경험해보면 기능 프로세스를 작업할 때 예외처리가 필수임을 깨달을 것이다. 예외를 .. 2021. 2. 28.
[Java] - 인터페이스를 이용한 다형성 출처 : 자바의 정석 배경지식 : 다형성, 인터페이스 인터페이스를 이용한 다형성 다형성이란 자손클래스의 인스턴스를 조상타입의 참조변수로 참조하는 것이다. class vehicle{ } class car extends vehicle{ } // 자손클래스 Car의 인스턴스를 조상타입 Vehicle의 참조변수로 참조 Vehicle v = new car(); 인터페이스 역시 가능하다. class Fighter implements Fightable{ public void move(){생략} public void attack(){생략} } Fighter 클래스가 인터페이스 Fightable 를 구현하는 관계이므로 Fightable 역시 Fighter 클래스의 조상이라 할 수 있다. 그러므로, 자손클래스의 인스턴스를.. 2021. 2. 26.
[Java] - 인터페이스란? 출처 : 자바의 정석 인터페이스란? 일종의 추상클래스다. 그렇다면 추상클래스와 차이점은? 추상클래스와 다른점은 추상클래스보다 추상화 정도가 높아서 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가질 수 있다. 아래와 같은 구조로 선언한다. interface 인터페이스 이름{ public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수); } 인터페이스 멤버 제약사항 - 모든 멤버변수는 public static final 이어야 하며, 생략 가능하다. - 모든 메서드는 public abstract 이어야 하며, 생략 가능하다. (jdk 1.8부터 static, 디폴트 가능) 인터페이스의 상속 인터페이스는 .. 2021. 2. 26.
[Java] - 추상클래스와 추상 메서드를 통해 본 OOP 추상화 출처 : 자바의 정석 추상클래스 추상클래스는 미완성 설계도에 비유할 수 있다. 단어의 뜻 그대로 완성되지 못한 채로 남겨진 설계도이다. 추상 클래스는 미완성 메서드를 포함하고 있다는 뜻이다. 추상클래스로는 인스턴스를 생성할 수 없다. 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 왜 미완성인 클래스를 만드는가? 추상 클래스는 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서 중요한 의미를 갖는다. 클래스를 어느정도 틀을 갖춰 놓고 상속을 통해 구현하면 된다. 선언 방법 - abstract을 붙여주면 된다. abstract class 클래스 이름{ } 추상 클래스도 생성자, 멤버변수, 메서드를 가질 수 있다. 추상메서드 추상 메서드역시 추상클래스처럼 미완성 메서드이다. 메서드는 선언부 +.. 2021. 2. 26.
[Java] - 다형성이란? 출처 : 자바의 정석 355p 다형성이란? 필요 배경지식 : 상속 여러 가지 형태를 가질 수 있는 능력. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조한다. 이 부분을 코드로 보자. 우선, 위 그림과 같은 상속관계를 코드로 정의한다면 class vehicle{ } class car extends vehicle{ } class truck extends vehicle{ } car 클래스의 인스턴스를 생성해보자. car c = new car(); 인스턴스의 타입과 일치하는 타입의 참조변수를 선언해야 .. 2021. 2. 26.
[Java] - 생성자란? 출처 : 자바의 정석 291p~ 생성자란? 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 생상자도 메서드이지만 고유의 역할이 있기 때문에 메서드와는 다른 선언 조건을 갖고 있다. - 생성자의 이름은 클래스의 이름과 같아야 한다. - 생성자는 리턴 값이 없다. new와 헷갈리지 않기! 생성자라는 이름때문에 생성자의 역할을 잘못 알기 쉽다. Card라는 클래스를 정의하고 main 메서드에서 Card 클래스의 인스턴스를 생성하려면 Card c = new Card(); 이와 같이 선언할 것이다. 여기서 연산자 new가 인스턴스를 생성하는 역할을 한다. 생성자가 인스턴스를 생성하는 것이 아니다! 위 코드가 실행되는 과정을 보면 1. 연산자 new에 의해 heap 영역에 Card 클래스의 인스턴스가.. 2021. 2. 26.