Java/객체지향 65

[객체지향][자바의 정석] - 8.1 예외처리(Exception Handling)

8.1 예외처리(Exception Handling) 1. 프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생시점에 따라 '컴파일 에러(compile - time error)'와 '런타임 에러(runtime error)'로 나눌 수 있는데, 글자 그대로 '컴파일 에러'는 컴파일 할 때 발생하는 에러이고 프로그램 실행 도중에 발생하는 에러를 '런타임 에러'라고 한다. 이외에도 '논리적 에러(logical error)'가 있는데, 컴파일도 잘되고 실행도 잘되지만 의도한 것과 다르게 동작하는 것을 논리적 에러라고 말한다. 에러 이름 에러 발생시점 컴파일 에러 컴파일 시에 발생하는 에..

Java/객체지향 2021.12.27

[객체지향][자바의 정석] - 7.8 내부 클래스(Inner class)

7.8 내부 클래스(Inner class) 1. 내부 클래스(Inner class)란? 클래스 안에 선언된 클래스 특정 클래스 내에서만 주로 사용되는 클래스를 내부 클래스로 선언한다. GUI어플리케이션(AWT, Swing)의 이벤트처리에 많이 사용된다. ▶ 내부 클래스의 장점(A클래스(외부클래스) 안에 B클래스(내부 클래스)를 넣는 경우) 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다. 코드의 복잡성을 줄일 수 있다. (캡슐화) package javaStandard; class A{//외부 클래스 class B{//내부 클래스 /*1. 객체 생성 없이도 A의 멤버에 접근이 가능하고 2. B가 A의 외부에서 사용할 필요가 없다면 A 안에서만 사용하면 복잡성이 줄어듬*/ } } package ..

Java/객체지향 2021.12.14

[객체지향][자바의 정석] - 7.7 인터페이스(Interface)

7.7 인터페이스(Interface) 1. 인터페이스(Interface)란? 일종의 추상클래스이며 추상클래스(미완성 설계도)보다 추상화 정도가 높다. 실제 구현된 것이 전혀 없는 기본 설계도를 생각하면 된다. 추상메서드와 상수만을 멤버로 가질 수 있다. 인스턴스를 생성할 수 없고, 클래스 작성에 도움을 줄 목적으로 사용된다. 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는 데 사용된다. 결론: 인터페이스는 추상 메서드의 집합이다.(프로그래밍의 관점) 1-(2) 추상클래스와 인터페이스의 차이 추상클래스: 일반 클래스 + 추상 메서드 인터페이스: 구현된 것이 아무것도 없는 것(추상메서드와 상수만 쭈욱 늘여놓은 것) 2. 인터페이스의 작성 class대신 interface를 사용한다는 것 외에는 클래스 작성..

Java/객체지향 2021.12.03

[객체지향][자바의 정석] - 7.6 추상클래스(Abstract class)

추상클래스(Abstract class) 1. 추상클래스란? - 클래스가 설계도라면 추상클래스는 '미완성 설계도' - 추상 메서드(미완성 메서드)를 포함하고 있는 클래스 - 추상메서드란? 선언부만 있고 구현부(몸통, body)가 없는 메서드 - 일반 메서드가 추상 메서드를 호출할 수 있다.(호출할 때 필요한 건 선언부) - 완성된 설계도가 아니므로 인스턴스를 생성할 수 없다. - 다른 클래스를 작성하는 데 도움을 줄 목적으로 작성된다. 추상메서드란 무엇인지 아래 코드를 통해 살펴보자 package javajungsuk; abstract class Player{ abstract void play(int pos); //추상 메서드 몸통이 없는 미완성 메서드 abstract void stop(); //추상 메서..

Java/객체지향 2021.11.28

[객체지향][자바의 정석] - 7.5 다형성

7.5 다형성 1. 다형성(Polymorphism)이란? (1) - 여러 가지 형태를 가질 수 있는 능력을 의미한다. - 하나의 참조변수로 여러 타입의 객체를 참조할 수 있는 것을 의미한다. 즉, 조상타입의 참조변수로 자손타입의 객체를 다룰 수 있는 것이 다형성이다. package javaStandard; class Tv{ boolean power; //전원상태(on/off) int channel; //채널 void power() { power = !power; } void channelUp() { ++channel; } void channelUDown() { --channel; } } class CaptionTv extends Tv{ String text; //캡션내용 void caption() { /..

Java/객체지향 2021.11.15

[객체지향][자바의 정석] - 7.4 제어자

※ 7.3 패키지와 import는 굳이 포스팅하지 않아도 될것 같아서 7.4로 넘어감 7.4 제어자 1. 제어자란? - 클래스 ,변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다. - 제어자는 크게 접근 제어자와 그 외의 제어자로 나뉜다. - 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근제어자는 단 하나만 사용할 수 있다. 접근 제어자 - public, protected, default, private 그 외 - static, final, abstract, native, transient, synchronized, volatile, strictfp 2. static - static이 사용될 수 있는 곳 - 멤버변수, 메서드, 초기화 블럭 제어자 대상 의미 static 멤버변..

Java/객체지향 2021.11.11

[객체지향][자바의 정석] - 7.2 오버라이딩(Overriding)

7.2 오버라이딩(Overriding) 1. 오버라이딩(overriding)이란? - 조상 클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것을 의미한다. - 상속받은 조상 메서드를 자신에 맞게 변경하는 것 class Point{ int x; int y; // 받은 좌표를 문자열로 얻는 메소드 String getLocation(){ return "x: " + x + ", y : "+ y; } } class Point3D extends Point{ int z; //선언부는 변경 불가, 구현부{ }는 변경 가능 String getLoString(){ //오버라이딩 z를 포함시켜 고치는 것 return "x: " + x + ", y : "+ y+", z : " + z; } } class ..

Java/객체지향 2021.11.08

[객체지향][자바의 정석] - 7.1 상속(inheritance)

7.1 상속(inheritance) 1. 상속의 정의와 장점 ▶ 상속이란? - 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것 - 두 클래스를 조상과 자손으로 관계를 맺어주는 것 - 자손은 조상의 모든 멤버를 상속 받는다. (생성자와 초기화 블럭은 제외한다.) - 자손의 멤버개수는 조상보다 적을 수 없다. (같거나 많아야 한다.) class 자손클래스 extends 조상클래스{ // ... } 2. 클래스간의 관계 - 상속관계(inheritance) - 공통부분은 조상에서 관리하고 개별부분은 자손에서 관리한다. - 조상의 변경은 자손에 영향을 미치지만, 자손의 변경은 조상에 아무런 영향을 미치지 않는다. 2. 클래스간의 관계 - 포함관계(composite) ▶ 포함(composite)이란? - 한..

Java/객체지향 2021.11.04