예외(Checked Exception, Unchecked Exception)
·
💻 Dev/Java & OOP
예외란?자바에서 예외란 "우리가 예상한, 혹은 예상치 못한 일이 발생하는 것을 미리 예견하고 안전장치를 하는 것"을 말한다. 예외의 종류는 3가지다.checked exceptionerrorruntime exception 또는 unchecked exception2, 3번째를 제외한 모든 예외는 1번 checked exception이다. 우선 오류와 예외를 구분할 필요가 있다.오류(error)는 자바 프로그램 밖에서 발생한 예외를 말하고 시스템이 종료되어야 할 수준의 심각한 문제를 의미한다.개발자가 미리 예측하여 방지할 수 없다. ex)- StackOverflowError : 호출의 깊이가 깊어지거나 재귀가 지속되어 stack overflow 발생 시 던져지는 오류- OutOfMemoryError : JVM..
interface와 abstract(추상) 클래스
·
💻 Dev/Java & OOP
인터페이스와 abstract를 사용하는 이유인터페이스와 abstract 클래스에 대해서 제대로 이해하려면 시스템을 만드는 절차를 알아야 한다.어떤 시스템을 개발하든 간에 “방법론”이라는 것을 사용하여 개발한다. 방법론: 시스템을 어떻게 만들 것인지에 대한 절차를 설명하고 어떤 산출물을 작성해야 하는지를 정리해 놓은 공동 절차 방법론의 일반적인 절차는 아래와 같다.분석 - 요구사항 분석설계 - 어떤 메서드를 만들 것인지, 데이터는 어떻게 저장할지개발 및 테스트시스템 릴리즈 이게 인터페이스와 abstract랑 뭔 상관인데?설계 단계의 산출물을 문서에만 정리하면 나중에 메서드 관련 내용들이 변경되면 문서도 수정해야 하므로 2중 3중의 일이 된다. 이 설계 단계에서 인터페이스라는 것을 만들어 두면 개발할 때 메..
동등성과 동일성&String.equals()
·
💻 Dev/Java & OOP
동일성, ==동일성은 동일하다는 뜻으로 두 개의 객체가 완전히 같은 경우를 의미한다. 여기서 완전히 같다는 것은 두 객체의 주소값이 같아 동일하다고 봐도 무방하다는 말이다. ==와 != 연산자는 기본 자료형에서만 값 비교를 위해 사용할 수 있다.참조 자료형에서 사용해도 되지만 참조 자료형에서 사용하면 값을 비교하는 게 아니라 주소값을 비교한다.Parent parent1 = new Parent("hyun");Parent parent2 = new Parent("hyun");System.out.println(parent1 == parent2); //falseParent 객체 안에 String name 이라는 변수에 같은 값을 넣고 비교해도 결과는 false다. 두 객체는 각자의 생성자를 사용하여 만들었기 때문..
[자바의 정석] - 인터페이스(interface)
·
💻 Dev/Java & OOP
인터페이스(interface) 인터페이스를 이해하려면 추상화, 다형성에 대한 이해가 필수적이다. ❓인터페이스란 ⭐ 추상 메서드의 집합 핵심 구현된 것이 전혀 없는 설계도, 껍데기(모든 멤버가 public) interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수목록); } 인터페이스는 변수를 가질 수 없다. 무조건 상수만 가질 수 있다. 메서드는 전부 다 추상메서드 = 추상메서드의 집합 interface PlayingCared { public static final int SPACE = 4; final int DIAMOND = 3; //public static final int DIAMOND = 3; static int..
[자바의 정석] - 다형성
·
💻 Dev/Java & OOP
다형성 객체지향에서 제일 중요한 개념이다. 다형성을 이해 못 하면 추상클래스, 인터페이스 이해를 못 할 것이다. 여러 가지 형태를 가질 수 있는 능력 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 class SmartTv extends Tv {} Tv t = new SmartTv(); //타입 불일치. ❓ 객체와 참조변수의 타입이 일치할 때와 일치하지 않을 때의 차이 가정 `Tv` 클래스의 멤버(참조변수, 메서드): 5개 `SmartTv` 클래스의 멤버(참조변수, 메서드): 7개 `SmartTv s = new SmartTv();` 타입이 일치할 때는 멤버 7개를 다 사용할 수 있다. `Tv t = new SmartTv();` 일치하지 않을 때는 멤버 5개만 사용할 수 있다. 자손 타입의 참조변수로 ..
[자바의 정석] - 추상 클래스와 추상메서드
·
💻 Dev/Java & OOP
추상클래스, 추상 메서드 미완성(부족한) 설계도 미완성 메서드를 갖고 있는 클래스 abstract class Player { //추상클래스(미완성 클래스) abstract void play(int pos); //추상메서드(몸통{}이 없는 미완성 메서드) abstract void stop(); //추상메서드 } 다른 클래스 작성에 도움을 주기 위한 것이다. 인스턴스 생성이 불가능하다. Player p = new Player(); //에러. 추상 클래스의 인스턴스 생성 불가 상속을 통해 추상 메서드를 완성해야 인스턴스 생성이 가능하다. class AudioPlayer extends Player { void play(int pos); { /* 생략 */} void stop(); { /* 생략 */} } Aud..
[자바의 정석] 참조변수의 형변환, instanceof 연산자
·
💻 Dev/Java & OOP
참조변수의 형변환사용할 수 있는 멤버(멤버 변수, 메서드)의 갯수를 조절하는 것이거 외에는 아무것도 없다!!주소값이나 객체? 절대 안바뀐다. 조상 자손 관계일때만 참조변수 서로 형변환 가능(형제X)class Car {}class FireEngine extends Car {}FireEngine f = new FireEngine();Car c = (Car)f; //조상인 Car타입으로 형변환(생략가능) 예제class CastingTest1 { public static void main(String args[]) { Car car = null; FireEngine fe = new FireEngine(); FireEngine fe2 = null; fe.water(); car = fe; // car..