对象 php

//类的声明和实例的生成、
<?php
//定义类
class guests{  //用关键字class声明一个类,类名为guests,大括号内为类的属性和方法
 
private $name;

private $gender;//用private 声明类的自有属性,在类的的外部不能访问,只能在内部访问

function setname($name){ //类的方法,可以对两个属性进行操作,

$this->name = $name;  //$this 是对类本身的引用,”->“连接类的属性,

}

//定义函数

function getname(){

return $this->name;
}

function setgender ($gender){

$this ->gender=$gender;
}

function getgender(){

return $this->gender; 
     }
};

$xiaoming =new guests;  //生成实例 ---用new 关键字生成一个对象,对象名是小明,对象小明就拥有了类guests的所有属性和方法,然后通过对象的方法来对对象的属性进行操作

$xiaoming -> setname("王小明");//通过setname (name)给实例xiaoming的属性name赋值”王小明“

$xiaoming ->setgender("男");//同上

$lili->new guests;

$lili->setname("李莉莉");

$lili->setgender("女");

echo $xiaoming ->getname()."/t".$xiaoming->getgender()."<br/>"; //通过getgender() ,getname()返回两个实例的属性name,gender并打印出来

echo $lili-> getname()."/t".$lili-> getgender();

?>


//构造方法的使用和技巧

<?php
class guests{ //定义类guests

private $name ;

private $gender;

function __construct ($name,$gender){  //定义函数function __construct

$this->name = $name;

$this-> gender =$gender;
}
function getname(){  //定义函数getname

return $this -> name;
}

function getgender(){  //定义函数getdender

return $this ->gender;
}

};

$xiaoming = new guests ("赵大勇","男");

$lili =new guests("方芳芳","女");

echo $xiaoming ->getname()."\t".$xiaoming->getgender()."<br/>";

echo $lili ->getname()."\t".$lili->getgender();

?>
//注:构造方法不能返回(return)值的


//访问方法
(accessor)
<?php
class guests{

public $property;

function _set($propName,$propValue){  //set方法的格式 --propName为”属性名“,propValue为”属性值“

$this ->$propName =$propValue; //对象的名称
}

function _get($propName){   //get方法的格式

return $this->$propValue;     //返回对象的值
}

};

$xiaoshuai =new guests;  //声明一个对象,对象名为小帅 ,之下为对象属性

$xiaoshuai ->name ="刘小帅";

$xiaoshuai ->gender ="男性";

$dingdang =new guests;        //同上

$dingdang ->name ="丁叮当";

$dingdang ->gender ="女性";

$dingdang ->age ="28";

echo $xiaoshuai ->name."是".$xiaoshuai->gender."<br/>";   //输出对象得属性值

echo $dingdang ->name."是一位".$dingdang ->age."岁".$dingdang ->gender."<br/>";  //同上

?>


//类的继承

<?php
class Vegetables{

var $tomato ="西红柿";   //定义变量
var $cucumber ="黄瓜";
}

class VegetablesType extends Vegetables{   //class  子类名  extends 父类名{  子咧变量   子类成员方法   }

var $potato ="马铃薯"; // 定义子类变量
var $radish ="萝卜";
}

$vegetables =new VegetablesType();  //实例化对象

echo "蔬菜包括:".$vegetables->tomato.",".$vegetables->t cucumber.",".$vegetables->potato.",".$vegetables->radish;  //输出对象属性

?>


//高级特性

//静态属性和方法

<?php
class Gushi{  //声明类

public static $my_static ='洛阳亲友如相问,一片冰心在玉壶。<br/>';  //声明静态变量

public function staticValue(){ //类的方法

return self::$my_static;

   }
}
print Gushi::$my_static;//调用静态属性

$gushi = new Gushi();  //声明一个对象

print $gushi->staticValue();//调用类的方法

?>


//final类和方法不能被继承

<?php
class Math {  //声明类,类名为math

//计算两数值的和

public final function Sum($a,$b){ //声明类的方法 且不能被继承

return $a+$b;  //返回a+b
}

}

class M extends Math { //子类M继承父类Math

public function Sum($a,$b){   //重写Sum(子类方法)方法

echo '这里先测试一下';   //方法执行内容
     }

}

$math =new M();  //声明对象?

echo $math->Sum(10,20); //输出math (子类的方法)下的方法sum

?>

//final 类不能被继承(final关键爱你次可以终止类的继承,final类不能有子类,final方法不能被覆盖)

<?php

final class Poth{   //声明类且不能被继承

public $aa =9.99;
//声明变量
}

$poth =new Poth();  //声明一个实例对象

echo $poth;  //输出poth

class M extends Poth{//声明M类,它继承自Poth类,但执行时会出错,final类不能被继承

}

?>


//抽象类和接口

//抽象类
格式为:
abstract  class 抽象类名称{

//抽象类的成员变量列表

abstract  function 成员方法1(参数);   //抽象类的成员方法

abstract  function 成员方法2(参数);   //抽象类的成员方法
}

<?php 
abstract class MyObject {    //声明一个抽象类

abstract  function service ($getName,$price,$num);  //抽象类的成员方法

}

class MyBook extends MyObject {   //继承父类

function service ($getName,$price,$num){ //抽象子类的成员方法

echo '够买的商品是'.$getName.'商品的价格是:'.$price.'元'; 
echo '您够买的数量为:'.$num.'本。';

     }
}

class MyComputer extends MyObject{   //继承父类

function service ($getName,$price,$num){ //子类的方法 

echo '您购买的商品是'.$getName.',该商品的价格是:'.$price.'元';
echo '您购买的数量为:'.$num.'本';
     }
}

$book =new MyBook();

$computer =new MyComputer();

$book->service('《php7从入门到精通',59,15);  //输出service方法

echo "<p>";

$computer ->service('Mysqk5.7从零开始学',65,10);//输出service方法

?> 


//接口
语法为:
interface 接口名称{
//常量成员      ---接口中成员只能是常量
//抽象方法 -   ---成员方法必须是抽象方法
}

实现接口的使用语法:
class 接口 implement 接口名称 {}
注:实现接口的类必须实现接口中声明的所有方法,除非这个类被声明为抽象类

<?php
interface Maxmin{   //声明接口类

//这两个方法必须在子类中继承,修饰符必须为public
public function getMax();
public function getMin();
}

class msm implements Maxmin{  //子类继承父类,声明变量
private $aa =33;
private $bb =66;

public function getMin(){//具体实现接口声明的方法
return $this->bb;
}

public function getMin(){
return $this->aa;
}

//这里还可以有自己的方法

public function getOther(){
return '这里是自己的方法';
   }
}


//面向对象的多态性

<?php
abstract class Vegetables{              //定义抽象类Vegetables
 abstract function go_Vegetables(); //定义抽象方法go_Vegetables
}

class Vegetables_potato extends Vegetables{  //马玲薯类继承蔬菜类

public function go_Vegetables(){   //重写抽象方法

echo '我们开始种植马铃薯';           //输出信息

    }
}

class Vegetables_radish extends Vegetables{    //萝卜继承蔬菜类

public function go_Vegetables(){    //重写抽象方法

echo '我们开始种植萝卜';
     }
}

function change($obj){     //自定义方法根据对象调用不同的方法
if ($obj instanceof  Vegetables) {
$obj ->go_Vegetables();
}else{

echo '传入的参数不是一个对象';    //输出信息

}

echo '实例化Vegetables_potato:';

change (new Vegetables_potato());   //实例化Vegetables_potato

echo "<br/>";

echo '实例化Vegetables_radish:';

change (new Vegetables_radish());    //实例化Vegetables_radish

?>
$msm =new msm();                //输出子类成员方法

echo $msm->getMax();

echo '<br/>';

echo $msm ->getMin();

echo '<br/>';

echo $msm ->getOther();
?>


//通过接口实现多态

<?php
interface Vegetables { //定义接口Vegetables

public function go_Vegetables(); //定义接口方法

}
class Vegetables_potato  implements Vegetables {    //Vegetables_potato子类继承父类Vegetables接口

public function go_Vegetables(){ //定义go_Vegetables方法

echo "我们开始种植马铃薯";       //输出信息

      }
}
class Vegetables_radish  implements Vegetables{    //Vegetables_radish 实现Vegetables接口

public function  go_Vegetables (){   //定义go_Vegetables方法

echo '我们开始种植萝卜';          //输出信息

      }

}
function change ($obj){    //自定义方法根据对象调用不同的方法

if($obj instanceof Vegetables){

$obj ->go_Vegetables();
}else{

echo '传入的参数不是一个对象';   //输出信息

     }
}
echo '实例化Vegetables_potato:';

change (new Vegetaables_radish());        //实例化 Vegetaables_radish

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值