객체 지향은 절차적 편집보다 유연하고 확장성이 뛰어난 컴퓨터 프로그래밍 아키텍처입니다. 여기서 저는 초보자들에게 상기시키고 싶습니다. 프로그래밍의 길에서 남들보다 더 발전하려면 객체 지향 프로그래밍 기술을 마스터해야 합니다.
public Public: 이 클래스, 하위 클래스, 외부 객체 모두 호출 가능
Protected: 이 클래스의 하위 클래스 실행 가능, 외부 객체 호출 불가
Private: 이 클래스만 실행 가능, 하위 클래스 및 외부 객체 없음
객체지향 프로그래밍의 세 가지 주요 특징
1) 클로저
클로저는 정보 은닉이라고도 할 수 있습니다. 클래스의 사용과 구현을 분리하고, 제한된 인터페이스(메서드)만 남겨 외부와 연결하는 것이다. 이 클래스를 사용하는 개발자는 이 클래스의 사용법만 알면 되며, 이 클래스가 어떻게 구현되는지는 신경 쓸 필요가 없습니다. 이를 통해 개발자는 다른 일에 더 집중할 수 있으며, 프로그램 간의 상호 의존성으로 인한 불편함도 피할 수 있습니다.
2) 상속
상속이란 파생 클래스(하위 클래스)가 하나 이상의 기본 클래스(상위 클래스)의 속성과 메서드를 자동으로 상속하고 새 속성과 메서드를 재정의하거나 추가할 수 있음을 의미합니다. 상속은 객체와 클래스 생성을 단순화하고 코드 재현성을 높입니다. 상속은 단일 상속과 다중 상속으로 구분됩니다. PHP는 단일 상속을 지원합니다. 즉, 하위 클래스는 하나의 상위 클래스만 갖습니다.
3) 다형성
다형성은 동일한 클래스의 서로 다른 객체가 동일한 방법을 사용하여 서로 다른 결과를 얻을 수 있다는 것을 의미합니다. 다형성은 소프트웨어 유연성과 재사용성을 향상시킵니다.
클래스 정의
클래스에는 자체 상수, 변수("속성"이라고 함) 및 함수("메서드"라고 함)가 포함될 수 있습니다.
많은 객체 지향 언어와 마찬가지로 PHP도 클래스 키워드와 클래스 이름을 통해 클래스를 정의합니다. 클래스의 형식은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
<?php Class myobject{ //…… } ?>
정의: 깃털 모양의 새들이 모여, 유사한 특성을 가진 개체를 그룹으로 묶어 클래스를 정의합니다. 이러한 유사한 개체가 갖는 동일한 속성과 메서드입니다. 클래스는 유사한 객체에 대한 설명으로, 클래스 정의라고 하며 해당 클래스 객체의 청사진 또는 프로토타입입니다.
클래스의 객체를 클래스의 인스턴스라고 합니다. 클래스의 인스턴스를 생성하려면 new 키워드를 사용해야 합니다.
001ZpQGYty6MeYnSNUh25&690
코드 복사 코드는 다음과 같습니다.
<?php //类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写 class NbaPlayer{ public $name = "Jordan"; //定义属性 public $height = "198cm"; public $team = "Bull"; public $playerNumber = "23"; //定义方法 public function run(){ echo "Running\n"; } public function dribblr(){ echo "Dribbling\n"; } public function pass(){ echo "Passing\n"; } } //类到对象的实例化 //类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号 $jordan = new NbaPlayer(); //对象中的属性成员可以通过"->"符号来访问 echo $jordan->name."\n"; //对象中的成员方法可以通过"->"符号来访问 $jordan->dribble(); $jordan->run(); ?>
멤버 메소드
클래스에 있는 함수를 멤버 메소드라고 합니다. 함수와 멤버 메서드의 유일한 차이점은 함수는 독립적인 함수를 구현하는 반면, 멤버 메서드는 클래스에서 동작을 구현하고 클래스의 일부라는 것입니다.
위의 myobject 클래스를 확장하고 여기에 멤버 메서드를 추가해 보겠습니다.
코드 복사 코드는 다음과 같습니다.
<?php classmyobject{ function getobjectname($name){ echo "商品名称为:".$name; } } ?>
이 메서드의 기능은 제품을 출력하는 것입니다. name. 메소드를 통해 제품 이름이 전달됩니다. 매개변수가 전달됩니다.
클래스는 추상적인 설명, 유사한 기능을 가진 객체의 모음입니다. 클래스의 메소드와 변수를 사용하려면 먼저 이를 엔터티, 즉 객체에 구현해야 합니다.
클래스 상수
변수가 있듯이 당연히 상수도 있습니다. 상수는 변하지 않는 양이며 일정한 값입니다. 잘 알려진 상수는 파이(pi)이다. 상수를 정의하려면 다음과 같이 const 키워드를 사용하세요.
ConstPI=3.14159;
Constructor
PHP 5에서는 개발자가 클래스의 생성자로 메서드를 정의할 수 있습니다. 생성자가 있는 클래스는 새 객체가 생성될 때마다 이 메서드를 호출하므로 객체를 사용하기 전에 일부 초기화 작업을 수행하는 데 매우 적합합니다.
코드 복사코드는 다음과 같습니다.
<?php //类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写 class NbaPlayer{ public $name = "Jordan"; //定义属性 public $height = "198cm"; public $team = "Bull"; public $playerNumber = "23"; //构造函数,在对象被实例化的时候自动调用 function __construct($name,$height,$weight,$team){ echo "It is an NbaPlayer constructor\n"; $this->name = $name; //$this是PHP里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法 $this->height = $height; $this->weight = $weight; $this->team = $team; } //定义方法 public function run(){ echo "Running\n"; } public function dribblr(){ echo "Dribbling\n"; } public function pass(){ echo "Passing\n"; } } //类到对象的实例化 //类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号 $jordan = new NbaPlayer("Jordan","198cm","98kg","Bull"); //对象中的属性成员可以通过"->"符号来访问 echo $jordan->name."\n"; //对象中的成员方法可以通过"->"符号来访问 $jordan->dribble(); $jordan->run(); //每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数 $james = new NbaPlayer("James","203cm","120kg","Heat") echo $james->name."\n"; ?>
Destructor
코드 복사코드는 다음과 같습니다.
<?php //类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写 class NbaPlayer{ public $name = "Jordan"; //定义属性 public $height = "198cm"; public $team = "Bull"; public $playerNumber = "23"; //构造函数,在对象被实例化的时候自动调用 function __construct($name,$height,$weight,$team){ echo "It is an NbaPlayer constructor\n"; $this->name = $name; //$this是PHP里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法 $this->height = $height; $this->weight = $weight; $this->team = $team; } //析构函数,在程序执行结束的时候会自动调用 //析构函数通常被用于清理程序使用的资源。比如程序使用了打印机,那么可以再析构函数里面释放打印机资源 function __destruct(){ echo "Destroying".$this->name."\n"; } //定义方法 public function run(){ echo "Running\n"; } public function dribblr(){ echo "Dribbling\n"; } public function pass(){ echo "Passing\n"; } } //类到对象的实例化 //类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号 $jordan = new NbaPlayer("Jordan","198cm","98kg","Bull"); //对象中的属性成员可以通过"->"符号来访问 echo $jordan->name."\n"; //对象中的成员方法可以通过"->"符号来访问 $jordan->dribble(); $jordan->run(); //每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数 $james = new NbaPlayer("James","203cm","120kg","Heat") echo $james->name."\n"; //通过把变量设为null,可以触发析构函数的调用 //当对象不再使用的时候会触发析构函数 $james = null; echo "from now on James will not be used.\n" ?>
소멸자는 객체에 대한 모든 참조가 삭제될 때 사용됩니다. 또는 객체가 명시적으로 소멸될 때 실행됩니다.
다음과 같은 코드: 위 내용은 PHP 연구 노트 - 객체 지향_php 기본의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!<?php
//类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写
class NbaPlayer{
public $name = "Jordan"; //定义属性
public $height = "198cm";
public $team = "Bull";
public $playerNumber = "23";
//构造函数,在对象被实例化的时候自动调用
function __construct($name,$height,$weight,$team){
echo "It is an NbaPlayer constructor\n";
$this->name = $name;
//$this是PHP里面的伪变量,表示对象自身。可以通过$this->的方式访问对象的属性和方法
$this->height = $height;
$this->weight = $weight;
$this->team = $team;
}
//析构函数,在程序执行结束的时候会自动调用
//析构函数通常被用于清理程序使用的资源。比如程序使用了打印机,那么可以再析构函数里面释放打印机资源
function __destruct(){
echo "Destroying".$this->name."\n";
}
//定义方法
public function run(){
echo "Running\n";
}
public function dribblr(){
echo "Dribbling\n";
}
public function pass(){
echo "Passing\n";
}
}
//类到对象的实例化
//类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号
$jordan = new NbaPlayer("Jordan","198cm","98kg","Bull");
//对象中的属性成员可以通过"->"符号来访问
echo $jordan->name."\n";
//对象中的成员方法可以通过"->"符号来访问
$jordan->dribble();
$jordan->run();
//每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数
$james = new NbaPlayer("James","203cm","120kg","Heat")
echo $james->name."\n";
//对象的引用用于访问对象的属性和方法,$james,$james1和$james2都是对象的引用
//$james和$james1是对象的两个独立引用
//$james2是$james的影子,使用对象的同一个引用,任何一个赋值为null相当于删除了同一个引用
$james1 = $james;
$james2 = &$james
$james = null;
echo "from now on James will not be used.\n"
?>