728x90
반응형
728x90
반응형
메서드에 예외 선언하기 예외를 처리하는 방법은 3가지가 있는데 본인이 (1)직접 해결(try - catch)하거나 (2)예외를 선언하여(예외 떠넘기기) 다른쪽에 넘기거나, 혹은 (3)은폐(catch문에 공백으로 남기기)하는 법이 있다. 메서드에 예외를 선언한다는 것은 아래와 같이 메서드에 throws를 붙여 발생할 수 있는 에러의 종류를 나열하는 것이다 아래 메서드 method에는 arithmeticexceptoin이나 (or) index초과 오류가 날 수도 있다는 것을 정의 따라서 메서드안에서 아래의 에러를 처리할 수 있는 try - catch를 선언하던지 혹은 호출한 쪽으로 에러를 떠넘기던지 둘 중에 하나의 액션을 취해야 한다. 주의할 점은 main안의 throw가 아닌 throws로 s를 붙여서 선..
오류 종류 컴파일 에러: 컴파일 시 생기는 오류 (system.out.print => s의 소문자 같은 컴파일 원인 오류) 논리적 에러: 실행은 되지만 의도와 다르게 동작되는 오류 런타임 에러: 시스템을 실행할 때 생기는 오류 (int[] => 빈 공백을 사용할 시 오류등이 런타임 에러) 런타임에러의 종류 에러(error): 수습 불가능한 심각한 오류; out of memory error; OOME 예외(exception): 코드에 의해 수습될 수 있는 다소 미약한 오류 예외처리 정의: 오류를 대비한 코드를 작성 목적: 비정상적인 프로그램 종료를 막고 오류 대비 코드로 재실행 예외처리 시 try - catch 문 사용 try { //예외가 발생할 수도 있는 코드 } catch (Exception e) {..
섯다 카드 한벌 생성 섯다카드 클래스 자체를 array로 지정하여 선언 지정한 후 if로 조건문을 선언하여 숫자 조건 추가 숫자를 배정할 때 객체를 선언하여 그 멤버변수에 숫자를 배정 위의 메인클래스에서 for문으로 출력 // 섯다카드 20장을 포함하는 섯다카드 한벌(sutdadeck클래스)를 정의한 것. // 섯다카드 20장ㅇ을 담는 sutdacard배열을 초기화하시오. // 섯다카드는 1-10까지 숫자가 적힌 카드가 한장씩 있고 1,3,8일 경우 둘증의 한장은 Kwang이어야 함 // public class Chap7 { public static void main(String[] args) { SutdaDeck deck = new SutdaDeck(); for(int i = 0; i
인터페이스 default & static 만약 interface에 추상메서드를 추가하면 다른 interface의 메서드를 쓰는 클래스에 추가된 추상메서드를 전부 선언해야하는 불편함이 있다. 따라서 default값을 넣고 {} 중괄호를 붙여 선언하면 원하는 클래스에만 그 추상메서드를 선언할 수 있다 중괄호를 선언해서 몸통을 만들었기 때문에 생기는 문제점 2가지 여러 인터페이스 디폴트 메서드간의 충돌 이 경우 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩 해야한다. 디폴트 메서드와 조상 클래스 메서드간의 충돌 이 경우 조상 클래스의 메서드가 상속되고 디폴트 메서드는 무시된다. class methodtest implements iftest{ public void method() { } } class..
인터페이스를 자손 클래스로 만들기 아래와 같이 abstract 클래스는 extends로 연결하고 implements로 인터페이스 자손으로 연결 class Fight extends Unit implements marine{ //인터페이스를 implements로 묶어 손자 클래스로 변환 int x; int y; } abstract class Unit{ } interface marine{ void move(int x, int y); void attact(); 인터페이스 장점 두 대상(객체)간의 연결, 대화, 소통을 돕는 중간역활 아래와 같이 선언(설계 - 껍데기)와 구현(실행 - 알맹이)을 분리시킬 수 있게 도와줌 즉 붙어있는 경우 변경이 불리하지만, 아래처럼 따로 분리되있는 경우 알맹이만 바꿀 수 있으므로 ..
인터페이스 정의: 추상메서드의 집합 구현된 것이 전혀 없는 설계도 껍데기 모든 멤버가 public static final & public abstract이여야 함 따라서 public static final과 public abstract는 인터페이스 내에서 생략이 가능하다 추상메서드와 인터페이스의 차이점 추상메서드는 생성자, IV, 추상메서드를 가지고 있지만 인터페이스는 찐으로 아무것도 없는 빈 깡통 IV의 보유 여부로 판별 가능 = 인터페이스 IV 없음, 추상 메서드 IV 존재 다만 상수는 가질 수 있음 = final 인터페이스 선언하는 법 클래스와 동일하게 생성 위의 설명과 같이 앞의 public static final 은 interface에서 필수로 적용되야하기 때문에 생략이 가능하다 interfac..
추상클래스 미완성 메서드: 몸통 { } 이 없는 미완성 메서드 = 추상클래스; 미완성 설계도 목적: 다른 클래스 작성에 도움을 주기 위함 각각의 자손 클래스마다 조건이 다르므로 꼭 필요한 메서드지만 기능을 달리할 필요가 있는 메서드들은 조상에게 상속을 받아오고 자손의 클래스로 넘어올 때 기능을 각기 구현해준다 각기 구현해줌으로써 코드도 간결화되고 유지보수가 쉬워지는 장점 도움이 되는 과정 미완성 설계도가 1개 있다고 치면 추상 클래스는 그 미완성 설계도의 작성을 도와주는 추가 설계도라고 볼 수 있다. 그 설계도만 고침으로써 코드의 중복을 막아주고 나머지 코드를 동일화시켜서 관리가 용이해진다. 또한 각각의 의미있는 단계를을 추상클래스로 정의해 놓으면 나중에 특정 부분을 수정할 때 일처리가 쉬워진다. 설명:..
instanceof 참조변수의 형변환을 하기 전에 instanceof 함수를 써서 형변환 가능여부 확인 > 가능하면 true 반환 사용이유: 형변환하기전에 형변환 가능여부를 확인할 때 조상 멤버를 상속받을 때 어떤 인스턴스를 받을 지 알 수 없기 때문에 instanceof로 TV가 가르키는 smartTV 인스턴스로 형변환이 가능한지 확인해야 함 아래와 같이 형변환이 가능하면 true값을 반환하고 불가능하면 false값을 반환 SmartTV smarttv = new SmartTV(); TV tv = new TV(); System.out.println(smarttv instanceof TV); System.out.println(smarttv instanceof SmartTV); System.out.print..