프로그래밍/JAVA (20) 썸네일형 리스트형 [JAVA 이론] 예외처리 예외처리 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 컴파일 에러: 컴파일 시에 발생하는 에러 런타임 에러: 실행 시에 발생하는 에러 논리적 에러: 실행은 되지만, 의도와 다르게 동작하는 것 에러: 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외: 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 예외 클래스의 계층구조 - 예외 클래스 계층도 - Exception클래스와 RutimeException클래스 중심의 상속 계층도 Exception클래스들 //사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외 RuntimeException클래스들 //프로그래머의 실수로 발생하는 예.. [JAVA 이론] 클래스(추상, 인터페이스, 내부, 익명) 추상클래스 추상클래스는 미완성 된 클래스이다. 따라서, 추상클래스 특징 1. 추상클래스로 인스턴스는 생성할 수 없다 2. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성 될 수 있다. 3. 추상클래스 자체로는 클래스로서의 역할을 다 못하지만, 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서 중요한 의미를 갖는다. 4. 새로운 클래스를 작성할 때 아무 것도 없는 상태에서 시작하는 것보다는 완전하지는 못하더라도 어느 정도 틀을 갖추게 해준다. 추상메서드 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것이 추상메서드이다. 추상메서드 특징 1. 미완성 상태로 남겨 놓는 이유는 메서드의 내용이 상속받은 클래스에 따라 달라질 수 있기 때문이다. 2. 조상 클래스에서는 선언부만 작성하고, .. [JAVA 이론] 다형성 다형성 객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조 할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 즉, 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다. class Parent{ /* 내용 생략 */ } class Child extends Parent{ /* 내용 생략 */ } Child c = new Child(); Parent p = new Child(); //가능 //둘 다 같은 타입의 인스턴스지만 참조변수의 타입에 따라 사용할 수 있는 맴버의 개수가 달라진다. 다형성의 특성 1. 조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있다. 2. 반대로 자손타입의 참.. [JAVA 이론] 상속 상속 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 조상 클래스: 부모(parent)클래스, 상위(super)클래스, 기반(base)클래스 자식 클래스: 자식(child)클래스, 하위(sub)클래스, 파생된(derived)클래스 class Parent{ } class Child extends Parent{ } 상속의 장점 1. 코드의 재사용성이 높아진다. 2. 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다. 상속의 특징 1. 생성자와 초기화 블럭은 상속되지 않는다. 맴버만 상속된다. 2. 자손 클래스의 맴버 개수는 조상 클래스보다 항상 같거나 많다. 3. 접근 제어자가 private 또는 default인 맴버들은 상속되지 않는다기보다 상속은 받지만 자손 클래.. [JAVA 이론] 오버로딩 & 오버라이딩 오버로딩 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '메서드 오버로딩'또는 간단히 '오버로딩'이라 한다. 오버로딩의 특성 1. 메서드의 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 오버로딩의 장점 1. 쉽고 이름도 짧게 할 수 있어서 유의 가능성을 많이 줄일 수 있다. 2. 메서드의 이름만 보고도 기능 파악을 할 수 있다. 3. 이름을 일일이 구분해야 되는 부담감을 덜어준다. 가변인자와 오버로딩 매개변수를 동적으로 지정해 줄 수 있다. public class VarArgs { public static void main(String[] args) { String[] strArr = {"A", "B", "C"}; System.out.println(concatenat.. [JAVA 이론] 객체지향 프로그래밍_2 생성자 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드' 이다. 생성자의 특성 1. 인스턴스 변수의 초기화 작업에 주로 사용 된다. 2. 인스턴스 생성 시에 실행되어야 할 작업을 위해 사용 된다. 3. 생성자의 이름은 클래스의 이름과 같다. 4. 생성자는 리턴 값이 없다. 5. 생성자도 오버로딩이 가능하므로 클래스에 여러개의 생성자가 존재 할 수 있다. 인스턴스의 생성 과정 Constructor con = new Constructor(); 1. 연산자 new에 의해서 메모리(heap)에 Constructor클래스의 인스턴스가 생성된다. 2. 생성자 Constructor()가 호출되어 수행된다. 3. 연산자 new의 결과로 생성된 Constructor인스턴스의 주소가 반환되어 참조변수 co.. [JAVA 이론] 객체지향 프로그래밍_1 객체지향언어 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다. 특성 코드의 재사용성이 높다. 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 코드의 관리가 용이하다. 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 신뢰성이 높은 프로그래밍을 가능하게 한다. 제어자의 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. 클래스와 객체 클래스 클래스의 정의: 클래스란 객체를 정의해 놓은 것이다. 클래스의 용도: 클래스는 객체를 생성하는데 사용된다. 객체 프로그래밍에서 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻함 객체의 정의: .. [JAVA 이론] 배열 배열이란? 배열은 같은 타입의 여러 변수를 하나의 묶음을 연속적으로 다루는 자료구조 배열의 선언과 생성 int[] array = new int[5]; 배열의 선언(int[] array): 타입[] 참조변수이름 배열의 생성(array = new int[5]): 참조변수이름 = new 타입[길이] 배열의 길이와 인댁스 인덱스의 범의는 0부터 "배열의 길이 - 1" 까지 배열의 길이는 int범위의 양의 정수(0도 포함)이어야 한다.(0 ~ 20억) 배열이름.length 자바에서는 JVM이 모든 배열의 길이름 별도로 관리하며, '배열이름.length'를 통해서 배열의 길이에 대한 정보를 얻을 수 있다. 배열의 길이 변경하기 1. 더 큰 배열을 새로 생성한다. 2. 기존 배열의 내용을 새로운 배열에 복사한다. 배.. 이전 1 2 3 다음