Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
Tags
- docker network
- mcp server
- MySQL
- Tool Calling
- SQL
- 객체복제
- Laravel
- OOP
- mcp client
- PHP
- 어댑터패턴
- SQL기초
- 라라벨
- PHP객체지향
- 디자인패턴
- 데이터베이스
- 인덱스
- Agent Loop
- docker
- LLM
- dhgrp
- 매직메서드
- 소프트웨어설계
- ai 에이전트
- ai agent
- 데코레이터패턴
- MCP
- linux 권한
- SQL문법
- 객체지향
Archives
- Today
- Total
개발블로그
[객체지향] PHP final 키워드 본문
Contents
접기
개념
의미
상속을 통한 확장이나 재정의를 제한하는 키워드
| 적용 대상 | 제한 내용 |
| 클래스 | 해당 클래스를 상속할 수 없음 |
| 메서드 | 자식 클래스에서 해당 메서드를 오버라이딩할 수 없음 |
| 상수와 속성 | 클래스 상수 (PHP 8.1 이상) - 자식 클래스에서 상수 재정의 금지 속성 (PHP 8.4 이상) - 자식 클래스에서 속성 재정의 금지 |
일반 문법
/**
* 클래스에 적용
* => 해당 클래스를 상속하는 자식 클래스를 만들 수 없음
*/
final class FinalClass
{
// 클래스 정의
}
/**
* 메서드에 적용
* => 자식 클래스에서 해당 메서드를 재정의할 수 없음
*/
class MethodExample
{
final public function methodName(): void
{
// 메서드 구현
}
}
/**
* 상수에 적용 (PHP 8.1 이상)
* => 자식 클래스에서 해당 상수를 재정의할 수 없음
*/
class ConstantExample
{
final public const CONSTANT_NAME = "값";
}
/**
* 속성에 적용 (PHP 8.4 이상)
* => 자식 클래스에서 해당 속성을 재정의할 수 없음
* => 객체의 속성값 변경은 가능
*/
class PropertyExample
{
final public string $propertyName = "초기값";
}
ex]
/**
클래스 적용
*/
final class Calculator
{
public function add(int $a, int $b): int
{
return $a + $b;
}
}
$calculator = new Calculator();
echo $calculator->add(10, 20); // 30
// 아래 클래스 선언은 오류 발생
// class CustomCalculator extends Calculator {}
/*
메서드 적용
*/
class Calculator
{
final public function add(int $a, int $b): int
{
return $a + $b;
}
}
class CustomCalculator extends Calculator
{
// 아래 메서드를 선언하면 오류 발생
// public function add(int $a, int $b): int
// {
// return $a + $b + 100;
// }
}
$calculator = new CustomCalculator();
echo $calculator->add(10, 20); // 30
/**
상수 적용
*/
class Response
{
final public const SUCCESS = 200;
}
class CustomResponse extends Response
{
// 아래 상수를 선언하면 오류 발생
// public const SUCCESS = 201;
}
echo CustomResponse::SUCCESS; // 200
/**
속성 적용
*/
class UserProfile
{
final public string $name = "Kim";
}
class CustomProfile extends UserProfile
{
// 아래 속성을 선언하면 오류 발생
// public string $name = "Lee";
}
$user = new CustomProfile();
$user->name = "Lee";
echo $user->name; // Lee'STUDY > PHP' 카테고리의 다른 글
| [객체지향] PHP readonly 속성과 클래스 (0) | 2026.09.06 |
|---|---|
| [객체지향] PHP Trait (1) | 2026.09.05 |
| PHP 변수 대입과 객체 복제 (1) | 2026.09.05 |
| [객체지향] PHP 매직 메서드 (0) | 2026.09.05 |
| [객체지향] PHP static과 스코프 해석 연산자 (0) | 2026.09.05 |