언어/Java 5

[Java] 상속

상속이란? 상속의 개념을 이해할 때 “상속”이라는 단어보다 코드에서 extends 라는 표현이 더 직관적인 것 같다. 상위 클래스를 유지하면서, 상위 클래스를 연장(extend)하여 하위 클래스를 만든다. 하위 클래스는 상위 클래스의 기능을 그대로 가져오면서 새로운 멤버(변수, 메소드)를 추가하거나, 기존의 메소드를 변경(overriding)할 수 있다. class Calculator1 { public int sum(int v1, int v2) { return v1 + v2; } } class Calculator2 extends Calculator1 { public int subtract(int v1, int v2) { return v1 - v2; } } Calculator2는 Calculator1을 e..

언어/Java 2023.08.22

[Java] final

추상(abstract) 이 상속을 강제하는 것이라면 final은 상속/변경을 금지하는 규제이다. final 필드 class Calculator { static final double PI = 3.24; } final로 지정된 필드(변수)에는 한번 값이 할당되면 그 값을 바꿀 수 없다. final 변수에 값을 재할당하면 컴파일 오류가 발생한다. final 메소드 final 메소드를 상속하려 하면 컴파일 오류가 발생한다. class A { final void b() {} } class B { void b() {} // error: overridden method is final } final 클래스 final 클래스를 상속하려고 하면 컴파일 오류가 발생한다. final class C { final void ..

언어/Java 2023.08.10

[Java] abstract

abstract abstract로 지정된 클래스나 메소드는 직접적으로 사용할 수 없고, 반드시 상속해서 사용하도록 강제된다. 이렇게 하면 상위 클래스(추상 클래스)에서는 일부 메소드를 추상적으로 남겨두어 하위 클래스에서 구현하도록 한다. 상황에 따라 동작 방법이 달라지는 메소드를 추상 클래스로 구현하면 하위 클래스들에서 각자 다르게 구현하여 사용할 수 있다. 추상 메소드 추상 메소드란 메소드의 시그니처만이 정의되어 있는 메소드를 의미한다. 메소드 시그니처(Method signature)란? 메소드가 설계된 구조를 의미하며, 메소드 이름, 파라미터의 순서, 타입, 개수로 식별된다. abstract class A { // 추상 메소드 (구체적인 로직이 구현되지 않음) public abstract int b(..

언어/Java 2023.08.10

[Java] 접근 제어자

접근 제어자 접근 제어자(access modifier)는 클래스의 멤버(변수, 메소드)들의 접근 권한을 지정한다. Java에서는 4가지 접근 제어자를 제공한다. private public protected default private🔥 클래스 내부에서만 접근할 수 있는 변수, 메소드 사용자가 내부 로직에 접근하는 것을 막아 개발자가 의도하지 않은 오작동을 방지한다. public🔥 클래스 외부에서 접근 가능한 변수, 메소드 사용자에게 객체를 조작하기 위한 의도로 작성된 수단만을 제공하여 결과적으로 객체의 사용에 집중할 수 있도록 돕는다. protected 상속 관계에 있을 때 서로 다른 패키지에 있는 클래스의 접근을 허용 같은 패키지 → 접근 O 다른 패키지, 상속 관계 X → 접근 X 다른 패키지, 상속..

언어/Java 2023.08.10

[Java] 클래스와 인스턴스

객체 지향 프로그래밍 클래스와 인스턴스 객체 지향을 단순하게 생각하면 연관되어 있는 변수(상태)와 메소드(행동)를 하나의 그룹으로 묶어서 그룹핑하는 것이다. 연관된 변수와 메소드들을 모아 놓은 그룹이 클래스(class)이고, 클래스를 이용하여 선언된 객체(object)가 인스턴스(instance)이다. 클래스 클래스는 연관되어 있는 변수와 메소드의 집합이다. 계산기를 클래스로 구현한다고 생각해보면, 입력된 숫자를 저장할 공간(변수)과 더하기, 빼기 등의 계산 기능(메소드)이 있어야 할 것이다. class Calculator { int left; int right; public int add() { return this.left + this.right; } public int subtract() { ret..

언어/Java 2023.08.10