《PHP应用:PHP面向对象详解(三)》要点:
本文介绍了PHP应用:PHP面向对象详解(三),希望对您有用。如果有疑问,可以联系我们。
PHP应用面向对象 对象概念是面向对象技术的核心.在显示世界里我们所面对的事情都是对象,如计算机、电视机、自行车等.在面向对象的法式设计中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象.
PHP应用对象的主要三个特性
PHP应用对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为.
对象的形态:当施加那些办法是对象如何响应,颜色,尺寸,外型.
对象的表示:对象的表示就相当于身份证,具体区分在相同的行为与状态下有什么不同.
PHP应用面向对象模型
PHP应用面向对象的概念:
PHP应用oop(面向对象的编程)它能是其代码更加简洁易于维护而且具有更强的可重性
PHP应用1、PHP面向对象(三)
PHP应用四、OOP的高级实践
PHP应用4.3 Static-静态成员
PHP应用
<?php
date_default_timezone_set("PRC");
/**
* 1. 类的定义以class关键字开始,后面跟着这个类的名称.类的名称命名通常每个单词的第一个字母大写.
* 2. 定义类的属性
* 3. 定义类的方法
* 4. 实例化类的对象
* 5. 使用对象的属性和方法
*/
class Human{
public $name;
public $height;
public $weight;
public function eat($food){
echo $this->name."'s eating ".$food."<br/>";
}
}
class Animal{
public $kind;
public $gender;
}
class NbaPlayer extends Human{
// 类的属性的定义
public $name="Jordan";// 定义属性
public $height="198cm";
public $weight="98kg";
public $team="Bull";
public $playerNumber="23";
private $age="44";
public $president="David Stern";
// 类的方法的定义
public function changePresident($newP){
$this->president=$newP;
}
public function run() {
echo "Running<br/>";
}
public function jump(){
echo "Jumping<br/>";
}
public function dribble(){
echo "Dribbling<br/>";
}
public function shoot(){
echo "Shooting<br/>";
}
public function dunk(){
echo "Dunking<br/>";
}
public function pass(){
echo "Passing<br/>";
}
public function getAge(){
echo $this->name."'s age is ".$this->age;
}
function __construct($name, $height, $weight, $team, $playerNumber){
print $name . ";" . $height . ";" . $weight . ";" . $team . ";" . $playerNumber."\n";
$this->name = $name; // $this是php里面的伪变量,表示对象自身
$this->height = $height; // 通过$this可以设置对象的属性值
$this->weight = $weight;
$this->team = $team;
$this->playerNumber = $playerNumber;
}
}
/**
* 1. 类实例化为对象时使用new关键字,new之后紧跟类的名称和一对括号.
* 2. 使用对象可以像使用其他值一样进行赋值操作
*/
$jordan = new NbaPlayer("Jordan", "198cm","98kg","Bull","23");echo "<br/>";
$james=new NbaPlayer("James", "203cm", "120kg", "Heat", "6");echo "<br/>";
// 拜访对象的属性使用的语法是->符号,后面跟着属性的名称
echo $jordan->name."<br/>";
// 调用对象的某个方法使用的语法是->符号,后面跟着方法的名称和一对括号
$jordan->run();
$jordan->pass();
//子类调用父类的方法
$jordan->eat("apple");
//试着调用private,直接以及通过内部的public函数
//$jordan->age;
$jordan->getAge();echo "<br/>";
$jordan->changePresident("Adam Silver");
echo $jordan->president."<br/>";
echo $james->president."<br/>";
直接从上述例子开始吧.
这里想得到的是,把两位对象的某一个变量同时变掉.――用static
public static $president="David Stern";
// 类的方法的定义
public static function changePresident($newP){
static::$president=$newP;//这里static换成self更符合规范
}
PHP应用注意这里static的位置,以及,方法内的::
PHP应用调用的办法也有所变动.
PHP应用
echo NbaPlayer::$president;echo "<br/>";
NbaPlayer::changePresident("Adam Silver");
echo NbaPlayer::$president;echo "<br/>";
PHP应用也就是像之前说的,静态成员就是个常量,所以不针对某个具体的对象(不受具体对象的约束)――基于此,定义&赋值&调用都不必要具体的对象参与.
PHP应用内部调用要用self/static::$...
PHP应用外部调用,类名::
PHP应用用处便是所有的对象共用的数据.
PHP应用--如果内部调用时,变量在父类中
PHP应用好比说,在上述例子中,父类human中写这么一句话
PHP应用public static $aaa="dafdfa";
PHP应用 然后在子类nbaplayer中,调用父类的静态成员时,要
PHP应用echo parent::$aaa;
PHP应用而外部调用,依照上面说的,类名::,所以,直接父类类名即可
PHP应用echo Human::$aaa;
PHP应用--其他
PHP应用在静态方法中,是无法拜访其他变量的,也就是说,不能用$this->
PHP应用--小结
PHP应用/**
* 静态成员
* 1. 静态属性用于保存类的公有数据
* 2. 静态方法里面只能拜访静态属性
* 3. 静态成员不需要实例化对象就可以拜访
* 4. 类内部,可以通过self或者static关键字拜访自身的静态成员
* 5. 可以通过parent关键字拜访父类的静态成员
* 6. 可以通过类名称在外部拜访类的静态成员
*/
PHP应用4.4 Final成员
PHP应用--问题
PHP应用不希望某个类拥有子类;
PHP应用不希望子类修改父类中的某个变量(避免重写?)
PHP应用--final
PHP应用》=php5版本
PHP应用举个例子
PHP应用
class BaseClass{
public function test(){
echo "BaseClass::test called<br/>";
}
public function test1(){
echo "BaseClass::test1 called<br/>";
}
}
class ChildClass extends BaseClass{
public function test(){
echo "ChildClass::test called<br/>";
}
}
$obj=new ChildClass();
$obj->test();
PHP应用 子类中编写跟父类中完全一致的办法名(内容可以不同),会完成对父类办法的重写!
PHP应用所以,不希望被重写的父类中的办法,写上final
PHP应用依此类推,对于不想有子类的父类,在类名那里写上final
PHP应用--小结
PHP应用/**
* 重写和Final
* 1. 子类中编写跟父类完全一致的办法可以完成对父类办法的重写
* 2. 对于不想被任何类继承的类可以在class之前添加final关键字
* 3. 对于不想被子类重写(overwrite, 修改)的办法,可以在办法定义前面添加final关键字
*/
PHP应用4.5 数据拜访
PHP应用先把final都去掉
PHP应用--parent
PHP应用然后再子类中的办法中写
PHP应用parent::test();
PHP应用运行后会发现,依然可以通过parent的关键字调用父类中,即使是被重写的数据
PHP应用--self
PHP应用然后在父类中的办法test中写
PHP应用self::test1();
PHP应用运行后,发现self可以调用同一个类中的数据(其他办法/静态变量/常量const)
PHP应用--小结
PHP应用/**
* 数据拜访补充
* 1. parent关键字可以用于调用父类被重写的类成员
* 2. self关键字可以用于拜访类自身的成员方法,也可以用于拜访自身的静态成员和类常量;不能用于拜访类自身的属性;拜访类常量时不用在常量名称前面加$符号
* 3. static关键字用于拜访类自身定义的静态成员,拜访静态属性时需要在属性名前面添加$符号
*/
PHP应用4.6 对象接口
PHP应用非常重要!!!
PHP应用--问题
PHP应用不同的类,有着相同的行为,但相同的行为又有着不同的实现办法.
PHP应用比如人和动物都会吃东西,但吃的方式办法又不太一样.
PHP应用--定义
PHP应用接口便是把不同类的共同行为进行了定义,然后在不同的类里面实现不同的功能.
PHP应用--栗子
PHP应用可以看到,接口中并没有办法的具体实现,但必须有办法!
PHP应用那么,下面是,“人类会吃”
PHP应用
//具体对象,连接到接口
class Human implements ICanEat{
public function eat($food){
echo "Human eating ".$food.".<br/>";
}
}
$obj=new Human();
$obj->eat("shit");
PHP应用请忽略我给出的“食物”.
PHP应用注意,不再用extends,而是implements.然后,同样是办法名的完全相同.然后,对象必须/最好实现办法.
PHP应用继续
PHP应用
interface ICanEat{
public function eat($food);
}
//具体对象,连接到接口
class Human implements ICanEat{
public function eat($food){
echo "Human eating ".$food.".<br/>";
}
}
class Animal implements ICanEat{
public function eat($food){
echo "Animal eating ".$food.".<br/>";
}
}
$obj=new Human();
$obj->eat("shit");
$monkey=new Animal();
$monkey->eat("banana");
PHP应用 让动物也吃起来!
PHP应用--逆向操作
PHP应用判断某个对象是否连接了某个接口.
PHP应用会返回boolean值.
PHP应用--更多的栗子
PHP应用
interface ICanPee extends ICanEat{
public function pee();
}
class Demon implements ICanPee{
public function pee(){
echo "Can demon pee?";
}
public function eat($food){
echo "Can demon eat ".$food;
}
}
$ghost=new Demon();
$ghost->pee();
$ghost->eat("shit");
PHP应用 接口本质上也是类,可以被继承/继承,但是使用继承接口的接口,所有父类、“爷类”的办法都要有具体实现.
PHP应用--小结
PHP应用/**
* 接口
* 1. 接口的基本概念和基本使用办法
* 2. 接口里面的办法没有具体的实现
* 3. 实现了某个接口的类必须提供接口中定义的办法
* 4. 不能用接口创建对象,但是能够判断某个对象是否实现了某个接口
* 5. 接口可以继承接口(interface extends interface)
* 6. 接口中定义的所有办法都必须是公有,这是接口的特性.
*/
PHP应用aaaaaaaaaaaaaa
PHP应用bu xiang xie le....................
PHP应用ming tian yao ge ..............
PHP应用以上内容是小编给年夜家介绍的PHP面向对象详解(三),希望年夜家喜欢.
《PHP应用:PHP面向对象详解(三)》是否对您有启发,欢迎查看更多与《PHP应用:PHP面向对象详解(三)》相关教程,学精学透。维易PHP学院为您提供精彩教程。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/8311.html