객체 지향 프로그래밍(OOP)에는 여러 가지 기능이 도입되어 프로그래밍이 더욱 복잡해졌습니다. 캡슐화, 상속 및 다형성은 프로시저의 함수에는 없는 OOP의 세 가지 요소입니다.
구체적으로 반영되는 항목:
1. 캡슐화: 클래스/인터페이스/public/protected/private
2. 상속: 확장/구현(권장 학습: PHP 프로그래밍 입문부터 숙련까지)
3. 다형성: 메소드 재작성/메서드 오버로드
새로운 클래스와 인터페이스는 새로운 변수 범위를 추가합니다. 즉, 클래스와 인터페이스의 코드 블록에는 함수에 없는 범위가 있습니다.
이 범위에서는 변수와 함수를 클래스 및 인터페이스의 멤버로 정의하고 공개/보호/개인 키워드를 사용하여 이러한 멤버에 대한 액세스를 제어할 수 있습니다. 예를 들어 공개는 외부 액세스가 허용되고 보호된다는 의미입니다. 이는 클래스 및 해당 하위 클래스 액세스를 의미하고, 개인은 클래스 내의 액세스만 허용됨을 의미합니다.
클래스는 키워드로 선언되어야 합니다. 클래스는 속성과 메서드로 구성됩니다. 일반적으로 클래스는 객체 지향 프로그래밍에 사용되며 속성이 없습니다. 프로세스 지향 프로그래밍은 특정 문제를 해결하기 위해 작성되었습니다.
또한 OOP는 메소드 재작성 및 메소드 오버로딩의 다형성 기능을 도입했습니다. 즉:
메소드 재작성: 매개변수 목록은 동일하지만 메소드 본문은 다릅니다.
메소드 오버로딩: 매개변수 목록은 다릅니다. 다르다, 메소드 본문이 다르다.
메서드 오버라이딩은 상속에 의존한다. 이는 하위 클래스의 메소드가 상위 클래스의 메소드를 오버라이드한다는 뜻이다.
메서드 오버로딩
상속 및 재정의된 메서드는 액세스 권한을 유지하거나 확대할 수만 있고 축소할 수는 없습니다.
예를 들어 상위 클래스 보호 메서드가 하위 클래스에서 public으로 오버로드되는 것이 가능합니다.
PHP에서는 동일한 이름을 가진 여러 메서드가 존재할 수 없으므로 C++와 같은 메서드 오버로딩을 지원하지 않습니다. /Java.
하지만 PHP는 간접 메소드 오버로딩을 위한 매직 메소드(__call, __callStatic)를 제공합니다.
PHP에서 메소드 재작성에는 동일한 매개변수가 필요하지 않습니다.
PHP는 다중 상속(여러 상위 클래스 상속)을 지원하지 않지만 다중 인터페이스를 구현할 수 있으며 특성 기능을 사용하여 다중 상속을 간접적으로 지원할 수도 있습니다.
어떤 사람들은 상속이 하위 클래스와 상위 클래스 간의 결합을 증가시킬 것이라고 생각하므로 Go와 같은 일부 새로운 프로그래밍 언어도 반대합니다. 상속을 직접 지원하지는 않지만 조합을 사용하여 상속을 대체합니다. 예를 들어 종속성 주입은 본질적으로 아이디어의 조합입니다. PHP에서는 이 클래스가 상속되지 않도록 클래스를 최종 수정할 수 있습니다.
위 내용은 PHP 클래스와 함수의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!