2016/3/21 面向对象: ①定义类 ②实例化对象 ③$this关键字 ④构造函数 ⑤析构函数 ⑥封装 ⑦继承
一:定义类 二:实例化对象
//定义类
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 "子类方法";
}
}
2016/3/21 面向对象: ①定义类 ②实例化对象 ③$this关键字 ④构造函数 ⑤析构函数 ⑥封装 ⑦继承的更多相关文章
- JavaScript 面向对象编程(三):非构造函数对象的继承
JavaScript 面向对象编程(三):非构造函数对象的继承 一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Chinese ...
- java面向对象之 类和对象
OOP:Object Oriented Programming(面向对象编程) 面向对象: 1:将复杂的事情简单化. 2:面向对象将以前的过程中的执行者,变成了指挥者. 3:面向对象这种思想是符合现在 ...
- Python记录14:面向对象编程 类和对象
'''现在主流的编程思想有两种,一种是面向对象,一种是面向过程面向过程编程 核心是过程二字,过程指的是解决问题的步骤,即先干什么.再干什么.最后干什么... 基于该思想编写程序就好比再设计一条流水线, ...
- Java面向对象(一) 类和对象
一.软件开发进化史 摘自<从零开始学架构> 机器语言(1940年) 最早的软件开发使用的是“机器语言”,直接使用二进制码0和1来表示机器可以识别的指令和数据. 汇编语言(20世纪40年代) ...
- python -- 面向对象编程(类、对象)
一.类 类是用来描述具有相同的属性和方法的对象的集合. 它定义了该集合中每个对象共同拥有的属性和方法. 类是一个独立的单位,它有一个类名,其内部包括成员变量和成员方法,分别用于描述对象的属性和行为. ...
- JS面向对象的类 实例化与继承
JS中 类的声明有两种形式: // 类的声明 function Animal() { this.name = 'name' } // ES6中的class声明 class Animal2 { cons ...
- Java核心基础第5篇-Java面向对象_类和对象
Java面向对象之类和对象 一.面向对象概述 Java是完全的面向对象编程(Object Oriented Programming),简称OOP. 面向对象编程的思维方式更加符合大家的日常生活,因为我 ...
- JavaScript基于对象(面向对象)<一>类和对象
javascript中一切皆对象,比如:Array,Date.....这些都是对象.javascript中没有class的定义,function既是定义函数,也可以是定义类.function Obj( ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
随机推荐
- 美团技术分享:大众点评App的短视频耗电量优化实战
美团技术专栏: 关注MAYOU18 前言 美团测试团队负责App的质量保证工作,日常除了App的功能测试以外,还会重点关注App的性能测试.现在大家对手机越来越依赖,而上面各App的耗电量,直接影响了 ...
- JavaScript:对Object对象的一些常用操作总结
JavaScript对Object对象的一些常用操作总结. 一.Object.assign() 1.可以用作对象的复制 var obj = { a: 1 }; var copy = Object.as ...
- 框架之---Django
Django是功能最为健全的一个WEB框架,但就因为过于健全,显得过于臃肿.但是Django中最为正要的就是Middleware.ORM和From表单. Django之web本质 Django之初 D ...
- Python 模块学习(一)
一.时间模块 import time # 模块调用语句 注意:模块级导入一般放在文件顶部 import datetime print(time.time()) # 1550411181.441547: ...
- pytest以函数形式的测试用例
from __future__ import print_function#pytest以函数形式形成测试用例def setup_module(module): print('\nsetup_modu ...
- DEV Express
记录在使用DEV Express中遇到的所有问题及解决方案 问题1:将Dev11升级到Dev14 解决方案:将解决方案中原有Dev引用删除,重新添加必须的Dev14引用,问题解决: 问题2:LC.ex ...
- 大数据学习——linux系统的网卡配置步骤
ifconfig 查看ip,没有ip时需要配置 配置步骤: 1输入命令setup,选择network configuration,选择runtool,选择device configuration,选择 ...
- zoj 2857 Image Transformation
Image Transformation Time Limit: 2 Seconds Memory Limit: 65536 KB The image stored on a compute ...
- CentOS7中,vnc分辨率设置。
使用geometry参数进行调整 例如,我们需要将分辨率调整到800x600 [root@secdb ~]# vncserver -geometry 800x600 New 'secdb:5 (roo ...
- [luoguP2184] 贪婪大陆(树状数组)
传送门 用两个树状数组,cr 维护 1....x 中 r 的数量 cl 维护 1....x 中 l 的数量 求答案的时候只需要求 y 前面 被作为左端点 的个数 - x 前面 被作为右端点的个数 —— ...