"PHP 시작부터 숙달까지 비디오 자습서" 과정에서 PHP(외국어 이름: PHP: Hypertext Preprocessor, 중국어 이름: "Hypertext Preprocessor")는 일반적인 오픈 소스 스크립팅 언어입니다. C언어, Java, Perl의 특징을 흡수한 구문으로, 배우기 쉽고 널리 사용되는 분야에 주로 적합합니다. PHP의 고유한 구문에는 C, Java, Perl 및 PHP 자체 구문이 혼합되어 있습니다. CGI나 Perl보다 빠르게 동적 웹 페이지를 실행할 수 있습니다. 다른 프로그래밍 언어와 비교하여 PHP로 만든 동적 페이지는 프로그램을 HTML(Standard Universal Markup Language의 응용 프로그램) 문서에 삽입하여 실행하며 HTML 태그를 완전히 생성하는 CGI보다 실행 효율성이 훨씬 높습니다. PHP는 컴파일된 코드도 실행할 수 있습니다. . 컴파일을 통해 암호화를 달성하고 코드 실행을 최적화하여 코드 실행 속도를 높일 수 있습니다.
강좌 재생 주소: http://www.php.cn/course/351.html
선생님의 강의 스타일:
강의는 친절하고 자연스러우며 가식 없고 가식적이지 않습니다. 고의적으로 과장하지 않고 설득력 있고 자세하게 이야기하면서 교사와 학생은 평등, 협력, 조화의 분위기에서 침묵의 감정 교환을 하며 지식에 대한 갈증과 탐구를 단순성과 진정성으로 통합합니다. 가르치는 상황에서 학생들은 지식을 얻습니다. 조용한 생각과 침묵의 승인을 통해
이 영상에서 더 어려운 점은 객체지향 프로그래밍의 세 가지 주요 특징입니다:
1. 캡슐화
캡슐화는 말 그대로 패키징의 의미는 전문적으로 정보 숨기기입니다. 이는 추상 데이터 유형을 사용하여 데이터 및 데이터 기반 작업을 캡슐화하여 분할할 수 없는 독립적 개체를 형성하는 것을 의미합니다. 데이터는 가능한 한 추상 데이터 유형 내에서 보호되며 연결을 위한 일부 외부 인터페이스만 유지됩니다. 외부 세계와. 시스템의 다른 개체는 데이터 외부에 래핑된 승인된 작업을 통해서만 이 캡슐화된 개체와 통신하고 상호 작용할 수 있습니다. 즉, 사용자는 객체의 내부 내용을 알 필요가 없고, 객체가 제공하는 인터페이스를 통해 객체에 접근할 수 있다.
캡슐화의 경우 객체는 자체 속성과 메서드를 캡슐화하므로 다른 객체에 의존하지 않고 자체 작업을 완료할 수 있습니다. 캡슐화를 사용하면 세 가지 주요 이점이 있습니다.
1. 좋은 캡슐화는 결합을 줄일 수 있습니다.
2. 클래스 내부 구조는 자유롭게 변경할 수 있습니다.
3. 회원을 더욱 정확하게 관리할 수 있습니다.
4. 정보를 숨기고 세부정보를 구현합니다.
캡슐화는 객체의 속성을 사유화하고 외부 세계에서 액세스할 수 있는 속성에 대한 몇 가지 메서드를 제공합니다. 외부 메서드로 액세스하지 않으려면 외부 액세스를 위한 메서드를 제공할 필요가 없습니다. 그러나 클래스가 외부 액세스를 위한 메서드를 제공하지 않으면 이 클래스는 의미가 없습니다.
public class Husband { /* * 对属性的封装 * 一个人的姓名、性别、年龄、妻子都是这个人的私有属性 */ private String name ; private String sex ; private int age ; private Wife wife; /* * setter()、getter()是该对象对外开发的接口 */ public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setWife(Wife wife) { this.wife = wife; } }
캡슐화를 사용하면 클래스를 사용하는 클라이언트 코드를 수정하지 않고도 클래스의 내부 구현을 쉽게 수정할 수 있습니다. 멤버 변수를 더욱 정밀하게 제어할 수 있습니다.
1. public void setAge(int age) { 2. if(age > 120){ 3. System.out.println("ERROR:error age input...."); //提示错误信息 4. }else{ 5. this.age = age; 6. } 7. }
. public String getSexName() { 2. if("0".equals(sex)){ 3. sexName = "女"; 4. } 5. else if("1".equals(sex)){ 6. sexName = "男"; 7. } 8. else{ 9. sexName = "人妖"; 10. } 11. return sexName; 12. }
2. 상속
2.1 상속 개요
상속이란 기존 클래스의 정의를 기반으로 새로운 클래스를 정의하여 새로운 데이터나 새로운 기능을 추가하거나, 새로운 클래스를 생성하는 기술입니다. 부모 클래스의 정의를 사용하지만 부모 클래스에서 선택적으로 상속할 수는 없습니다. 상속을 사용하면 이전 코드를 매우 편리하게 재사용할 수 있어 개발 효율성이 크게 향상될 수 있습니다.
상속은 "is-a" 관계를 설명합니다. 두 개체 A와 B가 있는 경우 "A는 B입니다"라고 설명할 수 있으면 A가 B를 상속한다는 의미일 수 있습니다. 여기서 B는 상속자에 의해 호출됩니다. 클래스 또는 슈퍼 클래스인 경우 A는 서브클래스 또는 파생 클래스라고 불리는 후속 클래스입니다.
사실 후계자는 상속자의 특성을 갖는 것 외에도 고유한 특성도 가지고 있습니다. 예를 들어 고양이는 쥐를 잡는다거나 나무에 오르는 등 다른 동물이 갖고 있지 않은 특성을 갖고 있다. 동시에 상속 관계에서는 상속인이 상속인을 완전히 대체할 수 있지만 그 반대는 불가능합니다. 예를 들어 고양이는 동물이라고 말할 수 있지만 실제로는 동물이라고 말할 수 없습니다. 우리가 이것을 '상향 전환'이라고 부르는 이유입니다.
상속이 클래스가 서로 연관되고 특성을 공유하는 방식을 정의하는 것은 사실입니다. 동일하거나 친숙한 여러 클래스의 경우 공통 동작이나 속성을 추상화하고 이를 부모 클래스 또는 슈퍼 클래스로 정의한 다음 이러한 클래스를 사용하여 부모 클래스의 속성과 메서드를 가질 수 있습니다. 고유한 속성이나 메서드를 정의할 수도 있습니다.
동시에 상속을 사용할 때 세 가지 문장을 기억해야 합니다.
1 하위 클래스에는 상위 클래스의 비공개 속성과 메서드가 있습니다.
2. 하위 클래스는 고유한 속성과 메서드를 가질 수 있습니다. 즉, 하위 클래스는 상위 클래스를 확장할 수 있습니다.
3. 하위 클래스는 자신만의 방식으로 상위 클래스의 메서드를 구현할 수 있습니다. (나중에 소개).
상속을 배울 때 필수 요소인 생성자, 보호 키워드, 상향 변환
2.2 생성자
이전을 통해 우리는 하위 클래스가 비공개 클래스 외에도 상위 클래스의 속성과 메서드를 상속할 수 있다는 것을 알았습니다. , 하위 클래스가 상속할 수 없는 것, 즉 생성자도 있습니다. 생성자는 호출만 가능하고 상속은 불가능합니다. 상위 클래스의 생성자를 호출하려면 super()를 사용할 수 있습니다.
구성 프로세스는 상위 클래스에서 "외부"로 퍼집니다. 즉, 상위 클래스에서 시작하여 하위 클래스까지 단계별로 구성을 완료합니다. 그리고 우리는 부모 클래스의 생성자를 명시적으로 참조하지 않았습니다. 이것이 바로 Java의 영리함입니다. 컴파일러는 기본적으로 하위 클래스에 대한 부모 클래스의 생성자를 호출합니다.
그러나 부모 클래스의 생성자에 대한 기본 호출에는 전제 조건이 있습니다. 즉, 부모 클래스에는 기본 생성자가 있습니다. 부모 클래스에 기본 생성자가 없으면 명시적으로 super()를 사용하여 부모 클래스 생성자를 호출해야 합니다. 그렇지 않으면 컴파일러는 다음과 같은 오류를 보고합니다. 부모 클래스의 형식과 일치하는 생성자를 찾을 수 없습니다.
하위 클래스의 경우 생성자의 올바른 초기화가 매우 중요하며 이를 보장할 수 있는 방법이 단 하나인 경우에만 생성자에서 상위 클래스 생성자를 호출하여 초기화를 완료하고 상위 클래스 생성자가 모든 항목을 갖는 경우에만 가능합니다. 상위 클래스 초기화를 수행하는 데 필요한 지식과 능력.
상속의 경우 하위 클래스는 기본적으로 상위 클래스의 생성자를 호출하지만 기본 상위 클래스 생성자가 없는 경우 하위 클래스는 상위 클래스의 생성자를 명시적으로 지정해야 하며 이는 하위 클래스 생성자에 있어야 합니다. do (코드의 첫 번째 줄).
2.3 protected 키워드
개인 액세스 수정자는 캡슐화를 위한 최선의 선택이지만 이는 이상적인 세계에만 기반을 두고 있습니다. 때로는 다음과 같은 요구 사항이 필요합니다. 특정 항목을 가능한 한 안전하게 만들어야 합니다. 이 세계는 숨겨져 있습니다. 그러나 하위 클래스의 구성원은 여전히 해당 클래스에 액세스할 수 있습니다. 이때 protected를 사용해야 합니다.
protected의 경우 클래스 사용자에 관한 한 비공개이지만 이 클래스를 상속하는 모든 하위 클래스 또는 동일한 패키지에 있는 다른 클래스에서 액세스할 수 있음을 나타냅니다.
2.4 상향 변환
위의 상속에서 is-a 관계로서의 상속에 대해 이야기했습니다. 고양이 상속은 동물과 관련되어 있으므로 고양이는 동물이거나 고양이는 동물의 일종이라고 말할 수 있습니다. 이런 식으로 고양이를 동물로 보는 것은 상향 변환입니다.
3. 다형성
3.1 다형성 개요
소위 다형성이란 프로그램에서 정의한 참조 변수가 가리키는 특정 유형과 참조 변수를 통해 발행되는 메소드 호출이 프로그래밍 중에 결정되는 것이 아니라 프로그래밍에서 결정되는 것을 의미합니다. 프로그램 참조 변수가 어떤 클래스의 인스턴스 객체를 가리키는지는 실행 시간 동안 결정됩니다. 참조 변수에 의해 실행된 메서드 호출은 프로그램 실행 중에 결정되어야 합니다. 특정 클래스는 프로그램이 실행 중일 때만 결정되기 때문에 소스 프로그램 코드를 수정하지 않고도 참조 변수를 다양한 클래스 구현에 바인딩할 수 있으므로 참조에서 호출하는 특정 메서드가 그에 따라 변경됩니다. 프로그램 코드는 프로그램이 실행 중일 때 프로그램에 바인딩된 특정 코드를 변경하여 프로그램이 여러 실행 상태를 선택할 수 있도록 합니다.
따라서 다형성을 다음과 같이 요약할 수 있습니다.
하위 클래스를 가리키는 상위 클래스 참조의 상향 변환으로 인해 상위 클래스가 소유한 메서드와 속성과 하위 클래스에 있지만 하위 클래스에 있는 속성에만 액세스할 수 있습니다. 부모 클래스 메서드에 없으면 메서드 오버로드에도 불구하고 이 참조를 사용할 수 없습니다. 하위 클래스가 상위 클래스의 일부 메서드를 재정의하는 경우 이러한 메서드를 호출할 때 하위 클래스에 정의된 메서드(동적 연결, 동적 호출)를 사용해야 합니다.
객체 지향의 경우 다형성은 컴파일 타임 다형성과 런타임 다형성으로 구분됩니다. 그 중 편집 시 다형성은 주로 메서드의 오버로딩을 의미하며, 편집 후에는 런타임 시 두 가지 다른 기능이 됩니다. 런타임 다형성은 동적이며 동적 바인딩을 통해 달성됩니다. 이를 다형성이라고 합니다.
3.2 다형성 구현을 위한 조건
처음에는 상속이 다형성 구현을 준비한다고 언급했습니다. 하위 클래스인 Father는 하위 클래스를 가리키는 상위 클래스 유형 참조를 작성할 수 있습니다. 이 참조는 동일한 메시지가 하위 클래스나 상위로 전송될 때 상위 클래스인 Father 객체를 처리할 수 있습니다. 클래스 객체가 사용될 때 객체는 자신이 속한 참조에 따라 다른 동작을 수행합니다. 이것이 다형성입니다. 즉, 다형성은 동일한 메시지로 인해 서로 다른 클래스가 다르게 응답하는 것을 의미합니다.
Java가 다형성을 달성하려면 상속, 재작성, 상향 변환이라는 세 가지 필수 조건이 있습니다.
상속: 다형성에는 상속 관계가 있는 하위 클래스와 상위 클래스가 있어야 합니다.
재작성: 하위 클래스는 상위 클래스의 특정 메서드를 재정의하며 이러한 메서드가 호출되면 하위 클래스의 메서드가 호출됩니다.
상향 변환: 다형성에서는 하위 클래스의 참조를 상위 클래스 객체에 할당해야 합니다. 이 방법을 통해서만 참조가 상위 클래스의 메서드와 하위 클래스의 메서드를 호출할 수 있습니다.
위의 세 가지 조건이 충족되는 경우에만 통일된 논리를 사용하여 동일한 상속 구조에서 서로 다른 개체를 처리하여 서로 다른 동작을 수행하는 코드를 구현할 수 있습니다.
Java의 경우 다형성 구현 메커니즘은 한 가지 원칙을 따릅니다. 즉, 슈퍼클래스 객체 참조 변수가 서브클래스 객체를 참조할 때 참조 변수의 유형이 아닌 참조된 객체의 유형에 따라 호출되는 멤버 메서드가 결정되지만 이 메서드는 호출되는 메소드는 슈퍼클래스, 즉 서브클래스에 의해 재정의된 메소드에서 정의되어야 합니다.
3.3 구현 형식
Java에서 다형성을 달성하는 데는 상속과 인터페이스라는 두 가지 형식이 있습니다.
3.2.1.상속을 기반으로 한 다형성
상속을 기반으로 한 구현 메커니즘은 주로 상위 클래스와 상위 클래스를 상속하는 하나 이상의 하위 클래스에 의한 특정 메소드의 재작성에 반영됩니다. 여러 하위 클래스를 재정의하면 다른 동작이 나타날 수 있습니다.
상속을 기반으로 구현된 다형성은 다음과 같이 요약할 수 있습니다. 하위 클래스를 참조하는 상위 클래스 유형의 경우 참조를 처리할 때 상위 클래스를 상속하는 모든 하위 클래스에 적용 가능합니다. 서브클래스 객체에서는 서로 다르며 동일한 작업을 수행하여 생성되는 동작도 다릅니다.
상위 클래스가 추상 클래스인 경우 하위 클래스는 상위 클래스의 모든 추상 메서드를 구현해야 합니다. 이러한 방식으로 상위 클래스의 모든 하위 클래스는 통합된 외부 인터페이스를 가져야 하지만 내부 특정 구현은 다를 수 있습니다. 이러한 방식으로 최상위 클래스에서 제공하는 통합 인터페이스를 사용하여 이 수준의 메서드를 처리할 수 있습니다.
3.2.2. 인터페이스 구현에 기반한 다형성
상속은 상위 클래스의 동일한 메서드를 재정의하는 여러 다른 하위 클래스에 의해 반영됩니다. 그런 다음 인터페이스를 구현하고 동일한 메서드의 여러 다른 하위 클래스를 재정의하여 구현할 수 있습니다. 인터페이스.클래스가 반영됩니다.
인터페이스의 다형성에서 인터페이스를 가리키는 참조는 인터페이스를 구현하는 클래스를 지정하는 인스턴스 프로그램이어야 합니다. 런타임 시 해당 메서드는 개체 참조의 실제 유형에 따라 실행됩니다.
상속은 단일 상속으로, 관련 클래스 그룹에 대해 일관된 서비스 인터페이스만 제공할 수 있습니다. 그러나 인터페이스는 다중 상속 및 다중 구현을 가질 수 있으며 관련되거나 관련되지 않은 인터페이스 집합을 사용하여 결합 및 확장될 수 있으며 외부 세계에 일관된 서비스 인터페이스를 제공할 수 있습니다. 따라서 상속보다 유연성이 더 좋습니다.
위 내용은 시작부터 마스터링까지 PHP 비디오 튜토리얼에 대한 권장 리소스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!