2016/3/21 面向对象: ①定义类 ②实例化对象 ③$this关键字 ④构造函数 ⑤析构函数 ⑥封装 ⑦继承
2024-10-20 03:58:38
一:定义类 二:实例化对象
//定义类
class Ren
{
var $name;
var $sex;
var $age; function Say()
{
echo "{$this->name}在说话";
}
}
//实例化对象
$Ren = new Ren();
//调用对象的成员:
$Ren->name = "张三";
$Ren->Say();
显示结果:
三:$this关键字
$this->name; this代表该对象,如果要在成员方法中调用成员变量,一定要使用$this找出该成员变量
四:构造函数:
①html5以前,构造函数名必须与类型相同
②执行时间特殊,最早执行,作用成员变量初始化
无参:
function __construct()
{
echo "空参构造函数";
}
有参:
function __construct($n,$s,$a)
{
$this->name = $n;
$this->sex = $s;
$this->age = $a;
}
五:析构函数:
function __destruct()
{
echo "析构函数作用断开连接销毁释放空间";
}
六:封装:private set get
成员变量 定义访问修饰符 直接把var去掉 换public private protect
将类里面的成员变量加一个private修饰符变成私有的,目的是为了保护类里面的成员不被外界随意访问,从而确保类的安全性。将变量设置为私有,如何去访问:
①自己写函数get函数set函数,然后来对变量赋值和取值
②用系统自带的__get()函数和__set()函数来实现类里面的变量赋值取值
function __set($name,$value)
{
$this->$name = $value;
}
function __get($name)
{
return $this->$name;
}
七:继承
继承一般是单继承:一个儿子只能有一个父亲
①子类可以继承父类的所有成员
②子类可以对父类的成员方法进行重写:(函数名一样)
要在子类方法中调用父类的方法,用parent::Say();
function Say()
{
parent::Say(); echo "hello";
}
final关键字可以定义类为最终类,不可被继承。
静态:关键字:static
如果成员声明了为静态的,那么该成员是属于该类的,不是属于对象的
//如何调用静态的成员:
AA::$height = 10; //用类名加双冒号调用类的静态成员
AA::Hao();
//面向对象
class Ren
{ private $sex;
private $name;
//方法 访问成员变量的方法
private $age;//封装用private
//封装:访问成员变量的方法
public function SetAge($age)
{
if($age>18 && $age<80)
{
$this->age=$age;
}
}
//成员变量 定义访问修饰符 直接把var去掉 换public
//封装:简便方法赋值
public function __set($name,$value)
{ if ($name=="age")
{
if ($value>18 && $value<80)
{
$this->$name=$value;
}
}
else{
$this->$name=$value;
}
}
//封装:简便方法获取值
public function __get($name)
{
return $this->$name;
} public function Say() //成员方法
{
echo $this->name."这个人在讲话";
} //1,构造函数,写法特殊,必须与类名相同 2,执行时间特殊 最早执行 作用成员变量初始化
function __construct($name,$sex)
{
$this->name=$name;
$this->sex=$sex;
}
//2,析构函数:对象销毁时自动用 用来释放内存,关闭连接等
function __destruct()
{
echo "该对象马上销毁";
}
}
//继承
class Student extends Ren
{
public $class;
//父类方法的扩展和重写
function Say()
{ parent::Say();//调用父类中的方法
echo "子类方法";
}
}
最新文章
- no module named flask.ext.login
- iOS-----About Asset Catalog
- codeforces 356 C. Compartments 构造 贪心
- __future__
- Ubuntu 安装 ImageMagic(6.9.1-6)及 PHP 的 imagick (3.0.1)扩展
- js实现通用的微信分享组件示例
- 学习练习 java 验证码练习
- CSS浮动属性Float到底什么怎么回事,下面详细解释一下
- Win7构造wifi热点【Written By KillerLegend】
- UVa 116 (多段图的最短路) Unidirectional TSP
- Kafka 0.8: 多日志文件夹机制
- CodeFile与CodeBehind的区别
- oracle 定义数据完整性
- Object-c学习之路三(@class与#import的区别)
- Weka开发[4]-特征选择
- The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files
- 比特币区块结构Merkle树及简单支付验证分析
- android中的五大布局(控件的容器,可以放button等控件)
- IT连创业系列:新的一年,先淫文一篇!
- 页面中引入mui 地址选择,点击页面中其他input时页面回到顶部
热门文章
- js事件 (包含call()方法使用特点)
- python013 Python3 条件控制
- 【ITOO 5】启用MSDTC后的各种问题,以及解决方案
- react.js 父子组件数据绑定实时通讯
- spring mvc dispatcherServlet
- msp430入门编程50
- poj2773求第K个与m互质的数
- D. Little Artem and Dance---cf669D
- Maven新建webapp项目报错Could not resolve artifact org.apache.maven.archetypes:maven-archetype-webapp:pom:RELEASE
- 打开input输入的时候,css中position:absolute/fixed定位的时候,定位元素上移问题解决