본문 바로가기

JAVA

(21)
상속과 구현의 차이점 교육이 끝나고 혼자서 프로젝트를 진행하고 있는데 문득 드는 생각이 상속과 구현체의 차이점이 뭘까? 라는 의문점이 들었고 책에서 본 내용을 내가 이해한바로 요약해보면 상속은 공통된 부모를 가지는것들 끼리 묶음, 구현체는 공통된 기능을 하는것들 끼리 묶음 ,concrete 메소드는 상속되고,abstract 메소드는 구현하는거고 음 ~ 이렇게 이해를 하고 있는데 정확한건지는 모르겠다 구글링을 해봐도 대체 무슨소리인지 .. 왜이리 다들 어렵게 설명하는지.. 구글링을 통해서 찾아봤다 구글구글구글 만약 구글이 없었다면 난 코딩을못,, ㅋㅋㅋㅋ 일단 찾아 보니 is- a 를 상속관계라고 하고 caon-do가 인터페이스 상속이라고 나온다 그러면 is-a, can-do 가뭐지?... 처음본다 ㅎ ㄷ ㄷ 위키피디아에서 찾..
배열타입 알고리즘 공부하면서 배열을 자주 볼수 있는데 사용방법은 알고 있지만 정확한 사용방법과 개념을 정리해야겠다 배열이란? 변수는 한 개의 데이터만 저장할 수 있다. 따라서 저장해야 할 데이터의 수가 많아지면 그만큼 많은 변수는 필요하다 예를 들어 학생 30명의 성적을 저장하고, 평균값을 구한다고 가정해보자. 먼저 학생 30명의 성적을 저장하기 위해 변수 30개를 선언해야 한다. 만약 배열 변수가 null값을 가진 상태에서 변수[인덱스]로 값을 읽거나 저장하게 되면 NullPointException 이 발생한다. 배열 변수는 배열을 생성하고 참조하는 상태에서 값을 저장하거나 읽어야한다. 값 목록으로 배열 생성 배열 항복에서 저장될 값의 목록이 있다면, 다음과 같이 간단하게 배열 객체를 만들 수 있다. 데이터 타..
사용자 정의 예외와 예외 발생 사용자 정의 예외와 예외 발생 프로그램을 개발하다 보면 자바 표준 API에서 제공하는 예외 클래스만으로는 다양한 종류의 예외를 표현할수 없다. 예를 들어 은행업무를 처리하는 프로그램에서 잔고보다 더 많은 출금 요청이 들어왔을 경우 오류가 되며, 프로그램은 잔고 부족예외를 발생시킬 필요가 있다. 그러나 잔고 부족 예외는 자바 표준 API에는 존재하지 않는다 잔고 부족 예외와 같이 애플리케이션 서비스와 관련된 예외를 애플리케이션 예외 라고 한다. 애플리케이션 예외는 개발자가 직접 정의해서 만들어야 하므로 사용자 정이 예외라고도 한다. 사용자 정의 예외 클래스 선언 컴파일러가 체크하는 일반 예외로 선언할 수도 있고, 컴파일러가 체크하지 않은 실행 예외로 선언할 수도 있다. 일반 예외로 선언할 경우 Except..
예외 종류에 따른 처리코드 다중 catch 블록 내부는 다양한 종류의 예외가 발생할수 있다. 이 경우, 발생되는 예외별로 처리코드를 다르게 하려면 어떻게 해야할까? 이것에 대한 해답은 다중 catch 블록을 작성하는 것이다. catch 블록의 예외 클레스 타입은 try 블록에서 발생된 예외의 종류를 말하는데 try 블록에서 타입의 예외가 발생하면 catch 블록을 실행하도록 되어 있다. catch 블록이 여러개라고 할지라도 단하나의 catch 블록만 실행된다. 그 이유는 try 블록에서 동시 다발적으로 에외가 발생하지 않고 하나의 예외가 발생하면 즉시 실행을 멈추고 해당 catch 블록으로 이동하기 때문이다. NumberFormatException 이 발생하면 첫번째 catch 블록을 실행하고 그밖의 다른 예외가 발생하면 두번째 ..
JAVA 예외처리 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용 프로그램 실행 오류가 발생하는것을 자바에서 error 라고 한다. 에러는 JVM위에서 실행되는 프로그램을 아무리 견고하게 만들어도 결국 실행 불능이 된다. 개발자는 이런 에러에 대처할 방법이 전혀 없다. 자바에서는 에러 이외에 예외라고 부르는 오류가 있다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧 바로 종료된다는 점에서 에러와 동일하다. 그러나 예외처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지 되도록 할수 있다. 예외는 두가지 종류가 있다. 하나는 일반예외이고 다른하나는 실행예외이다. 일반 예외는 컴파일러 체크 예외라고도 하는데, 자바 소스를 컴파일하는 ..
클래스의 구성 멤버(return) 리턴문 리턴 값이 있는 메소드 메소드 선언에 리턴 타입이 있는 메소드는 반드시 리턴(return) 문을 사용해서 리턴값을 지정해야 한다 만약 return 문이 없다면 컴파일 오류가 발생한다 return문이 실행되면 즉시 종료된다. return문의 리턴값은 리턴 타입이거나 리턴 타입으로 변환될 수 있어야 한다. 예를 들어 리턴 타입이 int plus() 메소드에서 byte ,short,int 타입의 값이 리턴되어도 상관 없다. byte와 short은 int로 자동 타입 변횐되어 리턴되기 때문이다. return 문을 사용할때 주의할 점은 return문 이후에 실행문이 오면 "Unreachable code"라는 컴파일 오류가 발생한다. 왜냐하면 return문 이후에 실행문은 결코 실행되지 않기 때문이다. 따라..
클래스의 구성 멤버(메소드) 매소드는 객체의 동작에 해당하는 중괄호{} 블록을 말한다. 중괄호 블록은 이름을 가지고 있는데 이것이 메소드 이름이다, 메소드를 호출하게 되면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행된다. 메소드는 필드를 읽고 수정하는 역할도 하지만, 다른 객체를 생성해서 다양한 기능을 수행하기도 한다, 메소드는 객체 간의 데이터 전달의 수단으로 사용된다. 리턴타입 리턴 타입은 메소드가 실행후 리턴 하는 값의 타입을 말한다. 메소드는 리턴값이 있을수도 있고 없을 수도 있다. 메소드가 실행후 결과를 호출한 곳에 넘겨줄 경우에는 리턴 값이 있어야 한다. 예를 들어 전자계산기 객체에서 전원을 켜는 powerOn() 메소드와 두 수를 나누는 기능인 divide()메소드가 있다고 가정해보자. divide() 메소드는 나..
클래스의 구성 멤버(생성자) 생성자 생성자(Constructor)는 new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다. 객체 초기화란 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할준비를 하는 것을 말한다. 생성자를 실행시키지 않고는 클래스로부터 객체를 만들수 없다. new연산자에 의해 생성자가 성공적으로 실행되면 힙(heap) 영역에 객체가 생성되고 객체의 주소가 리턴된다. 리턴된 객체의 주소는 클래스 타입 변수에 저장되어 객체에 접근할 때 이용된다. 만약 생성자가 성공적으로 실행되지 않고 예외(에러)가 발생했다면 객체는 생성되지 않는다. 기본 생성자 모든 클래스는 생성자가 반드시 존재하며 , 하나 이상을 가질수 있다. 우리가 클래스 내부에 생성자 선언을 생략했다면 컴파일러는 다음..