Curso de PHP Orientado a Objetos – Aula 104 – Herança II – eXcript

사람들에게 말하십시오! 오리엔트 PHP 과정에 대한 또 다른 에피소드에 오신 것을 환영합니다 개체

이 단원에서는 다음과 같은 정의 및 개념을 연구합니다 서브 클래스 서브 클래스를 구현할 때 모든 비 전용 멤버를 받게됩니다 수퍼 클래스에서 정의됩니다 이것에 의해, 서브 클래스는 이것들을 사용할 수있게됩니다

함수뿐만 아니라 수퍼 클래스에 정의 된 변수에 값을 할당합니다 정의에 따라 모든 하위 클래스는 수퍼 클래스 유형이됩니다 즉, 클래스 A와 B 여기서 B는 A의 서브 클래스이고, 우리는 B를 가지고 있고 또한 타입이 될 것입니다 왜냐하면 그것은 이것에서 내려 오기 때문입니다 우리는 클래스를 정의합니다

조작 될 정보 그런 다음 파생 클래스는 자체 클래스를가집니다 멤버는 변수 또는 함수입니다 이제 우리는 구조체로 작업하고 있습니다 이미 구현 된 회원이 있다면 구현 된 회원을 보유해야합니다

상위 클래스의 하위 클래스는 하위 클래스에 정의 된 클래스와 나란히 작동해야합니다 그래서 우리는 서브 클래스를 구현해야한다 개념 예를 들어, 우리가 풀지 않을지라도 몇 가지 가정을 해봅시다 그 순간에 같은

예를 들어, 파생 클래스가 선언하면 어떻게됩니까? 기본 클래스에서 선언 된 동일한 이름의 변수? 즉, 클래스가 B는 클래스 A에 구현 된 동일한 이름의 변수를 구현합니다 파생 클래스가 같은 이름의 함수를 선언하면 질문이 발생합니다 다시 말하면, 서브 클래스가 a와 같은 이름을 가진 함수를 구현한다면 어떻게 될 것인가? 함수는 수퍼 클래스에서 구현됩니다 우리는 생성자가 호출된다는 것입니다 PHP 가상 머신에 의해

따라서 수퍼 클래스가 생성자를 구현 한 경우 서브 클래스는, 서브 클래스 생성자의 인스턴스를 작성해 구현했습니다 그것이 호출 될 것인가는 수퍼 클래스 나 서브 클래스의 호출이 될 것인가? 또는 우리는 둘 다해야합니다 빌더가 호출됩니까? 이 두 가지 상황은 우리가 객체 지향으로 작업합니다 그리고 그것이 의미하는 바는 지금부터입니다 우리의 연구는 확장 될 것입니다

왜냐하면 파생 된 클래스와 상호 작용할 때 우리는 우리는 또한 기본 클래스와 상호 작용할 것입니다 간단하지만 중요한 개념은 파생 클래스는 기본 클래스와 통합되어야합니다 문제가있는 경우 파생 된 클래스의 구현에서 우리가 발견 한 해결책은 수퍼 클래스가 변경되면 두 가지 상황 중 하나가 발생합니다 또는 수퍼 클래스 제대로 구현되지 않았거나 우리가 만난 솔루션에 개념적인 문제가 있습니다 이제부터 우리가 깨닫게 될 것은, 우리가 우리는 객체 지향에서 사용하는 것은 매우 간단하고 배우기 쉽고, 가장 큰 문제입니다 객체 지향의 구현은 구현에 있지 않지만 개념적 부분, 즉 분석에서 데이터 유형 간의 관계 분석 및 관련성 이제 예제를 만들어 보겠습니다

여기에 2 개의 정의 된 클래스가 있습니다 첫 번째 수퍼 클래스이고, 두 번째 서브 클래스입니다 그래서 우리가 할 일은 슈퍼 클래스의 서브 클래스 이제 하위 클래스 이름 클래스 수퍼 클래스의 모든 특성을 상속해야합니다 이제 간단한 코드를 구현해 보겠습니다 우리가 상황을 연구 할 때만

여기 슈퍼 클래스에서 시작해 보겠습니다 멤버를 public으로 정의하고 A의 멤버를 호출하여 초기화하겠습니다 값은 0입니다 세미콜론으로 지시를 마칩니다 그랬어

함수를 public으로 구현하면이 super 함수를 호출합니다 우리는 열다 괄호를 닫고 키를 열고 닫을 때 함수가 super name의 값이 호출되면 변수 A의 값을 콘솔에 인쇄해야합니다 우리는 변수 A에 접근 할 것입니다 우리는 의사 변수 $ this를 사용합니다

우리가 접근하고자하는 변수의 이름 세미콜론으로 지시를 마칩니다 그래서 우리는이 노드에 수퍼 클래스 이름 클래스를 구현했습니다 변수를 이름 A의 public으로 정의하고 값으로 초기화합니다 0이다 즉, 우리는 공개적 인 기능을 구현했습니다

우리는 그것을 슈퍼라고 부릅니다 우리는 명령어 블록에 구현 된 값을 화면에 출력해야한다 이제 변수의 하위 클래스를 구현해 보겠습니다 그럼 여기로 가자 변수를 public으로 정의하고 이름을 A로 정의하자

즉, 우리는 클래스 이름 SubClass에 public 멤버가 포함될 것이라고 말하고 있습니다 즉, 우리는 이미 SuperClassse에서 변수를 사용하고 있습니다 그래서 우리는 우리의 SuperClass뿐 아니라 우리의 SubClass에도 있어야합니다 이름이 같은 멤버가 포함되어 있습니다 이 작업이 완료되면 public으로, 하위, 닫고 닫는 괄호, 열린 키를 닫습니다

이제 우리가 할 일은 변수에 값을 할당하는 것입니다 A 다음으로 A 변수에 정수 값을 할당 해 봅시다 할당 할 값이 매개 변수로 전송됩니다 그래서 X

마지막으로, X에 의해 전달 될 값은 전체 유형이어야한다 자, 우리의 의사 변수를 사용하자 이름 A의 멤버, 그리고 값을 할당 해 봅시다 즉, 우리는 SubClass라는 클래스를 구현하여 클래스 이름 SuperClasse를 확장해야합니다 마지막으로 함수를 다음과 같이 선언합니다

공개되어 있으므로 우리는 같은 이름을 하위라고 정의하고 정수형 매개 변수를 전달할 수 있습니다 마지막으로, 우리는 우리의 변수 A가 매개 변수로 전달되는 값을 받아야한다는 함수 우리의 변수 X에 의해 우리는 상충되는 구현이 있다고 말할 수있다 SuperClasse와 SubClasse에는 같은 이름의 멤버가 있기 때문에 그럼 뭐야? 우리 하위 기능에서 여기서 일어날 것인가? 우리가 X의 값을 우리의 변수 A는 그 값을 가지고 있습니다

SuperClasse에 정의 된 SubClass 또는 pro 구성원에 정의되어 있습니까? 우리가 우리는 2 개의 정의를 가지고 있습니다 우리는 2 개의 다른 변수를 가져야합니다 이 범위로 제한되며이 변수는 여기에서이 범위로 제한됩니다 그런 다음, 우리가 변수 A에 X의 값을 할당 할 때, 2 명의 멤버 중 어느 것이 X의 값을 받는가? 또한, 슈퍼 함수에서 인쇄 할 값은 무엇입니까? 즉, 변수 A의 값을 인쇄 할 때 값 0이 인쇄됩니다 또는 변수 A에 할당 할 값을 여기에 출력합니다

22시에? 이 연구를 수행하기 위해이 코드를 구현했습니다 그런 다음 이제 우리의 목표는 하위 함수를 호출하고 매개 변수로 값을 전달하는 것입니다 그런 다음 super 함수를 호출하십시오 마지막으로 우리는 어떤 가치가 인쇄 될지 관찰 할 것입니다 자, 여기서 하위 이름 변수를 선언하고 변수 이름을 여기에 클래스 이름 SubClass의 새 인스턴스가 추가됩니다

우리는 괄호를 열고 닫습니다 세미콜론으로 지시를 끝내십시오 자, 우리의 하위 변수를 사용하자 subname 함수를 호출 해 봅시다 즉, 처음에는 함수를 호출합니다

SubClass에 정의되어 있습니다 그래서 하위 이름 함수를 호출하면 다음과 같이 전달됩니다 5 명령을 끝내기위한 세미콜론 그래서 우리는 선언한다

sub라는 변수와 SubClass 클래스의 인스턴스를 제공합니다 그런 다음 sub에 할당 된 인스턴스에 액세스하고 연산자를 사용합니다 마지막으로 값 5를 전달하여 하위 이름 함수를 호출합니다 슈퍼 함수를 ​​호출합니다 변수에 할당 된 인스턴스를 사용합시다

sub, 화살표 연산자를 사용하면 Ctrl + Tab이 여기 열립니다 우리의 CodeComplete 그리고 우리가 볼 수있는 것처럼, CodeComplete는 3 명의 멤버를 표시합니다 O 첫째, 우리의 이름은 변수 A이고, 우리는 하위 함수와 함수를가집니다 슈퍼 그래서 슈퍼 함수를 ​​호출하여 세미콜론으로 문장을 마무리합시다 그리고 나서 우리는 그것을 실행할 것입니다

그리고 우리가 볼 수 있듯이, 번호가 콘솔에 인쇄되어있었습니다 5 즉, 5가 하위 함수를 통과하는 매개 변수이고 여기에 5가 있습니다 하위 함수에서 전달할 값을 pro 매개 변수로 지정합니다 마지막으로, 우리가 super 함수를 호출 할 때, 우리는 SubClass에서 여기에 할당 된 값은 여기에있는 멤버에게 할당되었습니다

수퍼 클래스 우리가이 수업에서 배워야 할 것은 우리가 선언 할 때 SubClass에있는 같은 이름의 변수, 우리는 이것을 가리킬 것입니다 SuperClassse에서 구현 한 변수의 메모리 주소와 동일합니다 그래서 같은 이름의 변수를 선언 할 때 우리는 2 개의 정의를가집니다 하나가 될 것입니다

SuperClass 이름의 선언 된 변수가 없습니다 및 하위 클래스 따라서 SubClasse가 동일한 이름의 변수를 선언하면 두 변수 동일한 메모리 주소를 가리킬 것입니다 그러나이 현상은 변수를 가지고, 우리가 연구 할 때, 우리가 같은 이름의 함수를 가지고 있다면, 우리는 SuperClasse에 구현이 있고 SubClasse에 또 다른 구현이 있다는 것을 알았습니다 우리가 방금 연구 한이 현상은 변수들에서만 발생합니다

그런 다음 그게 다야! 이 강의에서는 Google의 구현에 대한 일반적인 연구를 수행했습니다 서브 클래스 우리는 지금부터 비슷한 상황을 연구 할 것입니다 여러 번 그래서 그게 다야! 다음 수업에서 만나서 고맙습니다

더, 안녕!