2025/05/01(4)
-
자바 접근 제어자
접근 제어자(Access Modifier)는 클래스, 메서드, 변수의 접근 범위를 제어하는 키워드다. 각각 클래스, 메서드, 변수별로 접근 제어자의 적용 범위가 달라진다. 클래스의 접근 제어자public어떤 패키지(폴더)에서든 접근 가능한 소스 파일(.java)에는 단 하나의 public 클래스만 존재 가능파일명은 반드시 public 클래스의 이름과 같아야 함default(package-private)접근 제어자를 명시하지 않은 경우의 기본값같은 패키지 내에서만 접근 가능src/├── com.example.main/ 실제로 패키지는 폴더를 기준으로 하지만 폴더가 있다고 모두 패키지는 아니다. 실제로 패키지로 작동하려면 파일 안에 패키지의 범위를 선언해줘야 한다. 그리고 그 선언한 부분이 패키지의 단위가 ..
2025.05.01 -
메서드 vs 함수
메서드와 함수는 비슷하지만 중요한 차이점이 있다.구분함수메서드소속독립적클래스에 종속접근방식직접 호출객체를 통해 호출데이터 접근매개변수로만객체의 필드 접근 가능사용 패러다임절차적 프로그래밍함수형 프로그래밍객체지향 프로그래밍하지만 자바에서 함수는 모두 클래스 내부에서만 정의할 수 있기때문에 함수 = 메서드다. 이건 예외가 없다. 기본적으로 자바는 모든 코드가 클래스 내부에서 정의되기 때문에 독립적으로 존재하는 함수가 없다.이것은 자바가 기본적으로 객체지향 프로그래밍을 따르기 때문이다. 객체지향의 핵심은 데이터와 해당 데이터를 처리하는 메서드를 하나의 단위(객체)로 묶는 것과 이를 통해 데이터와 기능이 서로 연관되어 응집도를 높이는 것인데 자바는 클래스를 강제함으로써 이를 어느정도 강제하게 된다. 즉 클래스 ..
2025.05.01 -
클래스의 final
final은 "변경할 수 없는" 또는 "상속할 수 없는"을 의미한다.클래스에 final을 사용하면final public class FinalClass { // 다른 클래스가 이 클래스를 상속할 수 없음 // ...}// 컴파일 에러class ChildClass extends FinalClass { // final 클래스는 상속 불가 // ...} 주로 사용되는 경우:보안이 중요한 클래스 (예: String 클래스)상속을 통한 확장을 금지하고 싶을 때불변성을 보장하고 싶을 때예시:// 상속 불가능한 클래스final class Math { // 수학 관련 메서드들...}// Java의 실제 예final class String { // 문자열 처리 클래스 // String은 너무 중..
2025.05.01 -
자바의 클래스(Class)
클래스란 무엇인가?개념 설명클래스는 객체 지향 프로그래밍의 기본 단위로, 관련된 데이터와 메서드(method)를 하나의 단위로 묶어놓은 설계도다. (자바스크립트의 class와 유사) 실제 프로그램에서 사용되는 객체(Object)를 만들기 위한 템플릿 역할을 한다. 이렇게 만들어진 객체를 인스턴스라고 부른다.비유 설명하지만 실제로 클래스가 어떤 것을 만들어야 한다고 강제하는 것은 아니다. 설계도라는 것은 해당 클래스에 대강 그런 기능들을 넣을 것이라 정해두는 것이라 설계도라 부르는 것이다. 클래스는 관련된 함수(메서드)를 담는 콘테이너이자 일종의 카테고리다. 내부에 어떤 속성과 기능이 있을지 정의해두는 틀이자 대강 무엇을 담을지 정해두는 것이지 실제로 클래스 자체가 어떤 역할을 하는 것은 아니다. 일종의 ..
2025.05.01