PHP面向对象编程(二)(php面向对象程序设计)
haoteby 2025-02-04 14:08 3 浏览
本文章为连载文章PHP面向对象的第二篇
建议先阅读前篇文章:PHP面向对象编程(一)
继承
基本概念
将一个类A中的特性信息,传递到另一个类B中,此时就称为:
B继承A
A派生出B;
基本语法:
几个基本概念
继承:一个类从另一个已有的类获得其特性,称为继承。
派生:从一个已有的类产生一个新的类,称为派生。
父类/子类:已有类为父类,新建类为子类。父类又可以称为“基类”,上级类,子类又称为派生类,下级类,
单继承:一个类只能从一个上级类继承其特性信息。PHP和大多数面向对象的语言都是单继承模式。C++是多继承。
扩展:在子类中再来定义自己的一些新的特有的特性信息(属性,方法和常量)。没有扩展,继承也就没有意义了。
访问控制修饰符
形式:
class 类名{
访问控制修饰符 属性或方法定义;
}
有3个访问修饰符:
public公共的:在所有位置都可访问(使用)。
protected受保护的:只能再该类内部和该类的子类或父类中访问(使用)。
private私有的:只能在该类内部访问(使用)。
他们的作用是:用来“限制”其所修饰的成员的“可访问性”;
可访问性:
就是在代码中使用这样两种语法形式的“有效性”(合法性):
对象->实例属性或方法;
类::静态属性或方法;
访问控制修饰符,需要结合使用该语法形式的所在位置,才能确定是否可访问。
有3个访问位置(范围):
某个类的内部:
某个类的继承类的内部:
某个类的外部:
则,他们结合起来的可访问性如下:
类内部 | 继承关系类内部 | 类外部 | |
public | Yes | Yes | Yes |
protected | Yes | Yes | No |
private | Yes | No | No |
总结说明:
1,public修饰的成员,哪里都能访问;
2,类的内部,可以访问任何级别的成员;
3,public具有最宽泛的可访问性;private具有最狭小的可访问性;protecte则居中;
parent关键词
parent表示“父母”的意思,在面向对象语法中,代表“父类”
——本质上就是代表父类这个“类”,而不是父类的“对象”;
其使用方式为:
parent::属性或方法; //通常是静态属性或静态方法,但有时候可能是实例属性或实例方法;
对比相关的2个词:
关键字 | 含义 | 使用位置: | 使用示例 |
parent: | 代表父类(这个类) | 肯定在一个方法中 | parent::属性或方法; |
self: | 代表当前其所在的类 | 肯定在一个方法中 | self::静态属性或方法; |
$this: | 代表调用当前方法的对象 | 肯定在一个方法中 | $this->实例属性或方法; |
构造方法和析构方法调用上级同类方法的问题
1,如果一个类 有 构造方法,则实例化这个类的时候,就 不会 调用父类的构造方法(如果有);
2,如果一个类没有构造方法,则实例化这个类的时候,就会自动调用父类的构造方法(如果有);
3,如果一个类 有 析构方法,则销毁这个类的时候,就 不会 调用父类的析构方法(如果有);
4,如果一个类没有析构方法,则销毁这个类的时候,就会自动调用父类的析构方法(如果有);
5,如果一个类中有构造方法或析构方法,则就可以去“手动”调用父类的同类方法(如果有);
手动调用的语法形式总是这样:
parent::构造方法或析构方法()
则,第5种情况,parent在构造方法中的一个典型代码(写法):
(在子类的构造方法中,常常需要去调用父类的构造方法,以简化对象的初始化工作。)
覆盖(override):
基本概念
覆盖,又叫“重写”:
含义:
将一个类从父类中继承过来的属性和方法“重新定义”——此时相当于子类不想用父类的该属性或方法,而是想要定义。
覆盖的现实需要:
对于一个父类,或许其属性的现有数据(值),子类觉得不合适,而需要有自己的新的描述;
或许其方法,子类觉得也不合适,需要自己来重新定义该方法中要做到事。
此时就可以使用覆盖。
重写的基本要求:
访问控制权限:
子类覆盖的属性或方法的访问控制权限,不能“低于”父类的被覆盖的属性或方法的访问控制权限:
具体来说:
父类: public 子类:只能是public
父类: protected 子类:可以说protected和public
父类: private 子类:不能覆盖!——既父类的私有成员,不存在被子类覆盖的可能。
方法的参数形式:
子类覆盖父类的同名方法的时候,参数要求跟父类保持一致;
特例:
构造方法重写的时候参数可以不一致
小注意:
虽然父类的私有属性不能被覆盖,但子类却可以定义自己的跟父类同名的属性;
虽然父类的私有方法不能被覆盖,但子类也不能定义自己的同名方法;
最终类
最终类,其实就是一种特殊要求的类:要求该类不允许往下继承下去。
形式:
final class 类名{
//类的成员定义。。。跟一般类的定义一样!
}
最终方法
最终方法,就是一个不允许下级类去覆盖的方法!!
形式:
class 类名{
final function 方法名(形参列表...){ 。。。。。 }
}
设计模式
什么叫设计模式?
简单来说,设计模式就是解决某个问题的一般性代码的经验性总结。
类比来说:
它类似之前所学的“算法”:针对某种问题,使用某种特定的语法逻辑就可以完成该任务。
工厂模式
所谓工厂模式,就是这样一个类(就是所谓的工厂类):
它可以根据“传递”给他的类名,而去生产出对应的类的对象。
单例模式:
例,就是实例(Instance),其实就是对象(object)
单例:就是一个对象;
单例模式:就是设计这样一个类,这个类只能“创造”出它的一个对象(实例);
设计一个类:mysql数据库操作类
设计目标:
1,该类一实例化,就可以自动连接上mysql数据库;
2,该类可以单独去设定要使用的连接编码(set names XXX)
3,该类可以单独去设定要使用的数据库(use XXX);
4,可以主动关闭连接;
上述设计目录,大致上相当于如下几行代码:
$link = mysql_connect(“localhost”, “root”, “123”);
mysql_query(“set names XXX”);
mysql_query(“use XXX”);
然后,后面就可以执行各种sql语句来:
$r1 = mysql_query(“insert into ....”);
$r2 = mysql_query(“delete from .....”)
$r3 = mysql_query(“select * from ....”);
使用这个类的代码如下所示:
相关推荐
- 手机如何检测是否被安装木马程序?如何防止路由器被黑客重置?
-
黑客攻击无线路由器有3种途径:...
- 盈盈可握的娇媚——全能美物ORICO WRE-30
-
由于工作的关系经常出差,在酒店除了一个RJ45接头,通常都没有无线网络可以提供,不可能自己携带太大的无线路由器,便携式的也买过几个,但是功能上大打折扣实在无法忍受,一直期盼能有既便携也功能丰富强大的产...
- 安卓重大锁屏密码漏洞,国产手机有几个中招了?
-
上周,一条新闻吸引了托尼注意。只用一张SIM卡,1分钟不到就能解锁你的安卓手机?...
- 零代码+免费+联网搜索:用DeepSeek+AnythingLLM搭建专属AI知识库
-
引言在信息爆炸的时代,如何高效管理私有数据并借助AI能力实现精准问答?本地私有知识库成为解决数据安全与智能化的最佳方案。本文将手把手教你使用开源工具AnythingLLM(项目地址:...
- iOS越狱更轻松?黑客破解Lightning连接器
-
IT之家(www.ithome.com):iOS越狱更轻松?黑客破解Lightning连接器近日,德国黑客StefanEsser,也就是人们熟知的i0n1c在他Twitter上表示,黑客已成功破解了...
- 如何在 Windows 11 中更改 PIN
-
#寻找数码点评派#打开Windows设置,转到帐户登录选项,然后选择PIN(WindowsHello)...
- 2019年终黑客工具盘点-最佳篇
-
2019已经匆匆溜走,在2020伊始,小兮为大家带来了2019年终工具盘点的最佳篇,将分成三个部分为大家推荐工具,分别是Windows最佳工具、Linux最佳工具和手机最佳工具。话不多说,开整!Win...
- 磁盘被 BitLocker 锁住了怎么办?教你轻松解决
-
如果你的磁盘被BitLocker锁住,通常是因为系统检测到潜在的安全风险(如硬件改动、多次密码错误等)或丢失了密钥。以下是分步解决方案:一、确认被锁原因①硬件改动:更换主板、TPM芯片或启动顺序变化可...
- 风靡全球的安全应用AppLock,同样可能泄露隐私
-
安全研究人员发现,DoMobileLtd.公司开发的知名的安卓安全应用AppLock存在多个漏洞,容易受到黑客攻击。AppLock应用锁简介AppLock在超过50个国家拥有1亿多用户,它自身支持2...
- 安卓5.1.1前所有版本曝密码漏洞,轻松乱码即可破解锁屏
-
据德州大学研究人员发现代号棒棒糖的Android5.x存在一个严重的软件漏洞,只要攻击者能拿到机子的情况下,手机若设置的是数字密码解锁方式,只要输入足够长的乱码就能绕过屏幕锁定,进入到HOME主页取...
- 手机里有钱的,这5项设置要打开,就算丢了别人也偷不走
-
随着手机支付时代的到来,可恨的坏人也紧跟支付方式的变化,改为盯上了我们的手机。如果你手机里有钱的,那么一定不要掉以轻心,做好以下5项设置,让手机里的钱的更安全。设置SIM卡锁定设置SIM卡锁定,其实就...
- 原来破解邻居家的WiFi这么难?还是用万能钥匙吧
-
我们中的许多人认为,入侵wifi就像用铁锤打破塑料锁一样,并且使用以下提到的工具也是如此。入侵无线网络只是从防御性安全转移到攻击性安全的开始部分。入侵wifi包括捕获连接的握手并使用字典攻击等各种攻击...
- 电脑开机PIN码忘记了怎么办?教你不用重装系统也可以重置
-
在使用电脑的时候,我们往往会为了保护电脑的安全,从而设置开机密码。但是总会出现PIN码忘记导致无法开机使用,特别是许多用户反复的输入错误密码导致登录次数过多或者重复的开关机,登录选项被禁用,请使用其他...
- 送你个使用锦囊 防止蓝牙耳机被“策反”
-
你每天戴的蓝牙耳机可能被定位跟踪?近日有报道称,部分蓝牙耳机存在安全漏洞,可被不法分子快速植入具有定位功能的代码,从而实现远程跟踪,甚至监听。这一话题迅速登上微博热搜榜,不少网友惊呼:自己身边居然潜伏...
- 系统小技巧:无懈可击 Windows组策略管理系统密码
-
为了保护自己的系统安全,我们一般都会为系统设置密码。不过很多人为了记忆方便,设置的都是类似“123456”这样的简单密码,或者即使设置了较为复杂的密码,但是使用的时间很长也不变化。这些密码策略其实都有...