php学习笔记 面向对象中[接口]与[多态性]的应用_php入门_脚本之
接口是一种特殊的抽象类,抽象类又是一种特殊的类
代码如下:
/* 接口技术
*
* 接口是一种特殊的抽象类,抽象类又是一种特殊的类
*
* 接口和抽象类是一样的作用
*
* 因为在PHP是单继承的,如果使用抽象类,子类实现抽象类就不能再去继承其他的类了
*
* 如果既想实现一些规范,又想继承其他类。就要使用接口。
*
* 接口和抽象类的对比
*
* 1.作用相同,都不能创建对象,都需要子类去实现
*
* 2.接口的声明和抽象类不一样
*
* 3.接口被实现方式不一样
*
* 4.接口中的所有方法必须是抽象方法,只能声明抽象方法(不用使用abstract修饰)
*
* 5.接口中的成员属性,只能声明常量,不能声明变量
*
* 6.接口中的成员访问权限,都必须是public,抽象类中最低的权限protected
*
* 声明接口: interface 接口名{ };
*
* 7.使用一个类去实现接口,不是使用extends,而是使用implements关键字
*
* 如果子类是重写父接口中抽象方法,则使用implements(实现),类--接口,抽象类--接口 使用implements,接口--接口 使用extends(继承)
*
* 可以使用抽象类去实现接口中的部分方法
* 如果想让子类可以创建对象,则必须实现接口中的所有方法
* 可以定义一个接口去继承另一个接口
* 一个类可以去实现多个接口(按多个规范开发子类),使用逗号分隔多个接口名称
* 一个类可以在继承一个类的同时,去实现一个或多个接口
*
* 使用implements的两个目的:
*
* 1.可以实现多个接口,而extends词只能继承一个父类
*
* 2.没有使用extends词,可以去继承一个类,所以两个可以同时使用
*
* 多态:多态是面向对象的三大特性之一
*
* “多态”是面向对象设计的重要特性,它展现了动态绑定(dynamic binding)的功能,也称为“同名异式”(Polymorphism)。多态的功能可让软件在开发和维护时,达到充分的延伸性(extension)。事实上,多态最直接的定义就是让具有继承关系的不同类对象,可以对相同名称的成员函数调用,产生不同的反应效果。
*
*
*
*
*
*/
//声明接口
interface Demo{
const HOST="localhost";
const USER="admin";
function fun1();//声明方法不用加abstract,默认就是。权限是public
function fun2();
}
//接口的继承
interface Demo2 extends Demo {
function fun3();
function fun4();
}
interface Demo3{
function fun5();
function fun6();
}
interface Demo4{
function fun7();
}
echo Demo::HOST;//可以访问接口中的常量
class Hello{
function fun8(){
}
}
//子类必须实现接口中的所有方法
class UTest extends Hello implements Demo2,Demo3,Demo4 { //实现多个接口
function fun1(){
}
function fun2(){
}
function fun3(){
}
function fun4(){
}
function fun5(){
}
function fun6(){
}
function fun7(){
}
}
/*-------------------多态---------------*/
interface Test{
function fun1();
function fun2();
}
class One implements Test{
function fun1(){
echo "aaaaaaaaa";
}
function fun2(){
echo "bbbbbbbbbbbb";
}
}
class Two implements Test{
function fun1(){
echo "11111111";
}
function fun2(){
echo "2222222222";
}
}
//同一个接口,实现同一个方法,不同对象,输出不同。这就是多态的表现与应用
$test=new One;
$test->fun1();//输出一行 a
$test->fun2();//输出一行 b
$test=new Two;
$test->fun1();//输出一行 1
$test->fun2();//输出一行 2
?>
/*--------------多态的一个应用实例 模拟USB设备的使用------------------*/
//一个USB的接口
interface USB{
function mount();//装载USB的方法
function work();//USB工作的方法
function unmount();//卸载USB的方法
}
//定义一个USB设备 U盘
class Upan implements USB{//实现USB接口
function mount(){
echo " U盘 装载成功
";
}
function work(){
echo "U盘 开始工作
";
}
function unmount(){
echo "U盘 卸载成功
";
}
}
//定义一个USB设备 USB鼠标
class Umouse implements USB{//实现USB接口
function mount(){
echo " USB键盘 装载成功
";
}
function work(){
echo "USB键盘 开始工作
";
}
function unmount(){
echo "USB键盘 卸载成功
";
}
}
//定义一个电脑类
class Computer{
//使用USB设备的方法
function useUSB ($usb){//$usb参数表示 使用哪种USB设备
$usb->mount();//调用设备的 装载方法
$usb->work();//调用设备的 工作方法
$usb->unmount();//调用设备的卸载方法
}
}
//定义一个电脑的使用者的类
class PcUser{
//安装USB的方法
function install(){
//首先拿来一台电脑
$pc=new Computer;
//拿来一些USB设备
$up=new Upan;//拿来一个U盘
$um=new Umouse;//拿来一个USB鼠标
//把USB设备插入电脑, 使用电脑中使用USB设备的方法 来调用 要插入的设备
$pc->useUSB($up);//插入U盘
$pc->useUSB($um);//插入USB鼠标
}
}
//实例化一个电脑用户
$user=new PcUser;
$user->install();//安装设备
/*-------------输出内容--------------
U盘 装载成功
U盘 开始工作
U盘 卸载成功
USB键盘 装载成功
USB键盘 开始工作
USB键盘 卸载成功
-----------------------------------*/
?>
作者:代号极光
http://www.cnblogs.com/zizhuyuan/archive/2011/06/16/2082262.html

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 인터페이스 소개 및 정의 방법 PHP는 웹 개발에 널리 사용되는 오픈 소스 스크립팅 언어입니다. 유연하고 간단하며 강력합니다. PHP에서 인터페이스는 여러 클래스 간의 공통 메서드를 정의하여 다형성을 달성하고 코드를 보다 유연하고 재사용 가능하게 만드는 도구입니다. 이 기사에서는 PHP 인터페이스의 개념과 이를 정의하는 방법을 소개하고 사용법을 보여주는 특정 코드 예제를 제공합니다. 1. PHP 인터페이스 개념 인터페이스는 클래스 애플리케이션을 정의하는 객체 지향 프로그래밍에서 중요한 역할을 합니다.

Go 언어는 유형 정의 및 메소드 연관을 통해 객체 지향 프로그래밍을 지원합니다. 전통적인 상속을 지원하지 않지만 구성을 통해 구현됩니다. 인터페이스는 유형 간의 일관성을 제공하고 추상 메소드를 정의할 수 있도록 합니다. 실제 사례에서는 OOP를 사용하여 고객 운영 생성, 획득, 업데이트 및 삭제를 포함하여 고객 정보를 관리하는 방법을 보여줍니다.

상속과 다형성은 클래스 결합에 영향을 줍니다. 상속은 파생 클래스가 기본 클래스에 종속되기 때문에 결합을 증가시킵니다. 다형성은 객체가 가상 함수와 기본 클래스 포인터를 통해 일관된 방식으로 메시지에 응답할 수 있기 때문에 결합을 줄입니다. 모범 사례에는 상속을 적게 사용하고, 공용 인터페이스를 정의하고, 기본 클래스에 데이터 멤버를 추가하지 않고, 종속성 주입을 통해 클래스를 분리하는 것이 포함됩니다. 다형성과 종속성 주입을 사용하여 은행 계좌 애플리케이션에서 결합을 줄이는 방법을 보여주는 실제 예입니다.

PHP의 OOP 모범 사례에는 명명 규칙, 인터페이스 및 추상 클래스, 상속 및 다형성, 종속성 주입이 포함됩니다. 실제 사례에는 웨어하우스 모드를 사용하여 데이터를 관리하고 전략 모드를 사용하여 정렬을 구현하는 것이 포함됩니다.

인터페이스와 추상 클래스는 분리 및 확장성을 위해 디자인 패턴에 사용됩니다. 인터페이스는 메서드 시그니처를 정의하고 추상 클래스는 부분 구현을 제공하며 하위 클래스는 구현되지 않은 메서드를 구현해야 합니다. 전략 패턴에서는 인터페이스를 사용하여 알고리즘을 정의하고 추상 클래스 또는 구상 클래스를 통해 구현을 제공하므로 알고리즘을 동적으로 전환할 수 있습니다. 관찰자 패턴에서 인터페이스는 관찰자 동작을 정의하는 데 사용되며 추상 또는 구체적인 클래스는 알림을 구독하고 게시하는 데 사용됩니다. 어댑터 패턴에서 인터페이스는 기존 클래스를 조정하는 데 사용됩니다. 추상 클래스 또는 구체적인 클래스는 호환되는 인터페이스를 구현하여 원본 코드와 상호 작용할 수 있습니다.

Go 언어는 객체 지향 프로그래밍, 구조체를 통한 객체 정의, 포인터 수신기를 사용한 메서드 정의, 인터페이스를 통한 다형성 구현을 지원합니다. 객체 지향 기능은 Go 언어에서 코드 재사용, 유지 관리 용이성 및 캡슐화를 제공하지만 클래스 및 상속 및 메서드 시그니처 캐스트에 대한 전통적인 개념이 부족하다는 제한 사항도 있습니다.

Huawei가 출시한 새로운 운영 체제인 Hongmeng 시스템은 업계에 큰 반향을 불러일으켰습니다. 미국의 금지 조치 이후 화웨이가 시도한 새로운 시도인 훙멍(Hongmeng) 시스템은 큰 기대와 기대를 모으고 있다. 최근에는 운이 좋게도 Hongmeng 시스템이 탑재된 Huawei 휴대폰을 구입하게 되었습니다. 일정 기간의 사용과 실제 테스트를 거쳐 Hongmeng 시스템의 일부 기능 테스트와 사용 경험을 공유하겠습니다. 먼저 Hongmeng 시스템의 인터페이스와 기능을 살펴보겠습니다. Hongmeng 시스템은 전체적으로 Huawei 고유의 디자인 스타일을 채택하여 작동이 간단하고 명확하며 원활합니다. 데스크탑에서는 다양한

인터페이스와 추상 클래스는 확장 가능한 PHP 코드를 생성하는 데 사용되며 다음과 같은 주요 차이점이 있습니다. 인터페이스는 구현을 통해 적용되는 반면 추상 클래스는 상속을 통해 적용됩니다. 인터페이스에는 구체적인 메서드가 포함될 수 없지만 추상 클래스에는 포함될 수 있습니다. 클래스는 여러 인터페이스를 구현할 수 있지만 하나의 추상 클래스에서만 상속할 수 있습니다. 인터페이스는 인스턴스화할 수 없지만 추상 클래스는 인스턴스화할 수 있습니다.
