본문 바로가기
728x90
반응형

Study63

[Java] 8. 예외처리(exception handling) 예외처리(exception handling) 1. 프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이 결과를 초래한 원인을 프로그램 에러 또는 오류라고 한다. 그리고 오류는 발생시점에 따라 컴파일 에러(compile-time error)와 런타임 에러(runtime error)로 나눌 수 있다. 컴파일 에러는 컴파일 도중 발생하는 에러이고 런타임 에러는 프로그램이 실행하는 도중에 발생한 에러이다. 또 한가지 논리적 에러(logical error)가 있는데 이는 컴파일도 잘되고 실행도 잘 되지만 프로그래머가 의도한 것과 다르게 동작하는 것을 말한다 컴파일 에러컴파일 시에 발생하는 에러 런타임 에러실행 시에 발생하는 에러 논리적 에러컴파일도 되고 실행.. 2022. 9. 7.
[Java] 7-8. 내부 클래스(inner class) 내부 클래스(inner class) 1. 내부 클래스란? 내부 클래스는 클래스 내에 선언된 클래스이다. 클래스에 다른 클래스를 선언하는 이유는 간단하다. 두 클래스가 서로 긴밀한 관계에 있기 때문이다. 한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 캘르스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점을 얻을 수 있다. 내부 클래스의 장점 - 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다. - 코드의 복잡성을 줄일 수 있다.(캡슐화)​ 2. 내부 클래스의 종류와 특징 내부 클래스의 종류는 변수처럼 선언 위치에 따라 구분된다. 내부 클래스 특 징 인스턴스 클래스 (instance class) 외부 클래스의 멤.. 2022. 9. 6.
[Java] 7-7. 인터페이스(interface) 인터페이스(interface) 1. 인터페이스란? 인터페이스는 일종의 추상 클래스이다. 인터페이스는 추상 메서드를 갖지만 추상 클래스보다 추상화 정도가 높아서 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상 메서드와 상수만을 멤버로 가질 수 있다. 인터페이스 또한 다른 클래스를 작성하는데 도움 줄 목적으로 작성된다. 2. 인터페이스의 작성 인터페이스를 작성하는 것은 클래스를 작성하는 것과 같다. 다만 선언부에서 class 키워드 대신 interface 키워드를 사용한다. 그리고 인터페이스 또한 접근 제어자로 public 또는 default를 사용할 수 있다. interface 인터페이스 이름{ public static final 타입 상수이름 = 값; public abstr.. 2022. 9. 6.
[Java] 7-6. 추상클래스(abstract class) 추상 클래스(abstract class) 1. 추상 클래스란? 미완성 메서드를 포함하고 있는 미완성 클래스이다. 추상클래스는 상속을 통해 하위 클래스에 의해서 완성될 수 있다. 추상 클래스는 abstract 키워드를 클래스의 선언부에 붙여주기만 하면 된다. abstract class 클래스 이름 { ... }​ 추상 클래스는 추상 메서드를 포함하고 있다는 점을 제외하고 일반 클래스와 같다. 2. 추상 메서드(abstract method) 메서드는 선언부와 구현부(몸통)로 구성되어 있다. 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 것이 추상메서드이다. 메서드를 미완성 상태로 남겨 놓는 이유는 상속받는 클래스에 따라 메서드의 내용이 달라질 수 있기 때문이다. 추상 메서드 역시 키워드 abstrac.. 2022. 9. 6.
[Java] 7-5. 다형성(polymorphism) 다형성(polymorphism) 1. 다형성이란? 객체지향개념에서 다형성이란 여러가지 형태를 가질 수 있는 능력을 말한다. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 하여 다형성을 프로그램적으로 구현하였다. 구체적으로 말하면 상위 클래스 타입의 참조변수로 하위 클래스 인스턴스를 참조할 수 있도록 하였다는 말이다. class Tv { boolean power; int channel; void power() { power = !power; } void channelUp() { ++channel; } void channelDown() { --channel; } } class CaptionTv extends Tv { String texst; void caption() { ... } }.. 2022. 9. 5.
[Java] 7-4. 제어자(modifier) 제어자(modifier) 1. 제어자란? 제어자는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 접근 제어자public, protected, default, private 그 외static, final, abstract, native, transient, synchronized, volatile, strictfp​ 제어자는 클래스나 멤버변수, 메서드에 주로 사용되고 하나의 대상에 대해서 여러 제어자를 조합하여 사용할 수 있다. 단, 접근 제어자는 한 번에 네 가지 중 하나만 선택해서 사용할 수 있다. 2. static - 클래스의, 공통적인 클래스 변수(static 멤버변수)는 인스턴스에 관계없이 같은 값을 갖는다. 하나의 변수를 모든 인스턴스가 공유하기 때문이다. sta.. 2022. 9. 5.
[Java] 7-3. package와 import 1. 패키지(package) 패키지란 클래스의 묶음이다. 패키지엔 클래스나 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓아 클래스를 효율적으로 관리할 수 있다. 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능하다. 사실 클래스의 풀네임은 패키지명을 포함한 것이다. 예로 String클래스는 java.lang.String이다. java.lang패키지에 속한 String클래스 라는 의미이다. 그렇기 때문에 같은 이름의 클래스라도 패키지명으로 구별이 가능하다. 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다. 디렉토리가 하위 디렉토리를 가질 수 있는 것처럼 패키지 또한 하위 패키지를 가질 수 있고 점(... 2022. 9. 5.
[Java] 7-2. 오버라이딩(overriding) 오버라이딩(overriding) 1. 오버라이딩이란? 상위 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속받은 메서드를 그대로 사용하기도 하지만 하위 클래스에서 다르게 변경하는 경우가 많다. 그러할 때 메서드를 오버라이딩한다. class Point { int x; int y; String getLocation() { return "x :" + x + ", y :" + y; } } class Point3D extends Point { int z; String getLocation() { // 오버라이딩 return "x :" + x + ", y :" + y + ", z :" + z; } }​ Point3D클래스의 인스턴스는 getLocation 메서드를 호출할 경우 z축의 .. 2022. 9. 3.
[Java] 7-1. 상속(inheritance) 상속(inheritance) 1. 상속의 정의와 장점 상속이란 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있어 코드의 추가 및 변경이 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거해 프로그램의 생산성과 유지보수에 크게 기여한다. 상속을 구현하는 방법은 새로운 클래스 이름 뒤에 상속받고자 하는 클래스의 이름을 extends 키워드와 함께 쓰면 된다. class Child extends Parent { ... }​ 두 클래스 Child와 Parent는 상속 관계에 있다. 상속해주는 클래스를 조상 클래스 상속 받는 클래스를 자손 클래스라 한다. 조상 클래.. 2022. 9. 3.
728x90
반응형