常用的继承过程,以及对public、private、protected修饰符的理解:

/*****************************父类********************************/
/**
* person父类
*/
class person
{ public $name; //共有属性在类的里面和外面都可以被访问,可以被子类继承
public $age;
public $sex;
protected $myprotect; //受保护属性,不能被外部访问,只能在类里面被访问,以及继承了本类的子类可以访问
private $myprivate; //私有属性,只能被本类的内部访问,不能被外部访问,也不能被子类继承访问 public static $mystaticObj; //全局静态变量,直接通过类方法访问
/**
* 构造方法
*/
function __construct($name,$age,$sex)
{
$this->name = $name;
$this->age = $age;
$this->sex = $sex; $this->myprotect = "myprotect";
$this->myprivate = "myprivate";
} /**
* 共有实例方法,可以被类的里面和外面访问,并且可以子类继承重写
*/
public function personInfo() {
echo "姓名:".$this->name."\n"."年龄:".$this->age."\n"."性别:".$this->sex."\n"."myprotect:".$this->myprotect."\n"."myprivate:".$this->myprivate;
} /**
* 私有实例方法,可以被类的里面访问,但不能被类的外面访问,也不能被子类继承访问
*/
private function mysecret() {
echo "这是我的秘密,不能告诉你";
} /**
* 受保护实例方法,可以被类的里面访问,也可以被子类访问,但不能被类的外面访问
*/
protected function myprotectfun() {
echo "这是我的myprotectfun方法";
} public static function share() {
echo "静态方法,直接通过类名调用";
} function __destruct() {
echo "god damn,I die";
} } /*****************************子类********************************/ /**
* 继承自person的子类
*/
class student extends person
{
public $grade; function __construct($name,$age,$sex,$grade)
{
parent::__construct($name,$age,$sex);
$this->grade = $grade;
} public function personInfo() {
parent::personInfo();
echo "\n"."grade:".$this->grade."\n"; /* 结果: 姓名:klp
年龄:24
性别:male
myprotect:myprotect
myprivate:myprivate
grade:six
这是我的子类myprotectfun方法
*/ $this->myprotectfun();
} protected function myprotectfun() {
echo "这是我的子类myprotectfun方法";
} public static function share() {
echo "子类静态方法,直接通过类名调用";
}
} // $obj = new person("klp","26","male");
// $obj->personInfo();
// $obj->myprotect; 报错:Fatal error: Cannot access protected property person::$myprotect
// $obj->mysecret(); /*报错:Fatal error: Call to private method person::mysecret() from context*/
// person::share(); /*静态方法,直接通过类名调用*/ $stu = new student("klp","24","male","six");
$stu->personInfo();
$stu->myprivate; /*返回为空,但是不会报错*/
student::share(); /*子类静态方法,直接通过类名调用*/

php面向对象理解(一)的更多相关文章

  1. js面向对象理解

    js面向对象理解 ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP).面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是, ...

  2. java普通类、抽象类、接口、面向对象理解

    1.面向对象编程: 面向对象编程的语言不止java一种,还有: simula 67(第一个面向对象语言,支持单继承和一定含义的多态和部分动态绑定): Smalltalk(第一个支持动态类型的语言,支持 ...

  3. Java面向对象理解_代码块_继承_多态_抽象_接口

    面线对象: /* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生 ...

  4. C++——OOP面向对象理解

    从Rob Pike 的 Google+上的一个推看到了一篇叫<Understanding Object Oriented Programming>的文章,我先把这篇文章简述一下,然后再说说 ...

  5. c#基础-oop(面向对象理解)

    OOP-面向对象 封装,继承多态 一个桌子,用面向对象来描述一下它这个桌子项目 定义桌子类 对象:桌子 桌子的属性:名字,材质,体积 桌子的方法;放东西(方法) 现在桌子要放书,放花瓶,放文件(这里就 ...

  6. 面向对象 理解 C#复习

    面向对象: 是基于万物皆对象这个哲学观点. 所谓的面向对象就是将我们的程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放到一个类里面 通俗点讲: 一切都是对象 举例: 将 ...

  7. java面向对象理解

    面向对象:世间一切事物均可认为是对象,用户不必了解软件内部的实现机制,可根据需要直接调用接口,生成一个正常工作的应用程序. 面向对象的特点:抽象,封装,继承,多态性, 对象:对象就是一个具有明确行为的 ...

  8. python 面向对象理解

    简介 与java语言一样,python也属于面向对象编程,除此之外,还有面向过程编程.函数式编程. 面向过程编程:依据业务逻辑自上而下一步一步编写, 可能会存在冗余现象 函数式编程:需要编程语言可以将 ...

  9. accp8.0转换教材第8章JavaScript对象及初识面向对象理解与练习

    JavaScript数据类型,对象,构造函数,原型对象,初识原型链,对象继承 一.单词部分 ①object父类②constructor构造函数③instance实例④call调用 ⑤apply应用⑥c ...

随机推荐

  1. HDU 1226 超级密码(BFS) (还需研究)

    Time Limit:10000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Desc ...

  2. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring JDK动态代理

    JDK 动态代理是通过 JDK 中的 java.lang.reflect.Proxy 类实现的.下面通过具体的案例演示 JDK 动态代理的使用. 1. 创建项目 在 MyEclipse 中创建一个名称 ...

  3. SASS - 输出格式

    SASS – 简介 SASS – 环境搭建 SASS – 使用Sass程序 SASS – 语法 SASS – 变量 SASS- 局部文件(Partial) SASS – 混合(Mixin) SASS ...

  4. 启动mysql遇到问题Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    在mysql的启动过程中有时会遇到下述错误 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 请问mys ...

  5. (排序)P1177 【模板】快速排序

    题解: 这道题用传统快排(如下所示)的结果就是最后三个点TLE: 如果永远取第一个元素作为枢轴的话,在数组已经有序的情况下每次划分都将得到最坏的结果,时间复杂度退化为O(n^2).因为其中一个子序列每 ...

  6. 51nod 1346:递归

    1346 递归 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 函数f(n,m) { 若n=1或m=1返回a[n][m]; 返回f(n-1,m)异或 ...

  7. 实用的VMware虚拟机使用技巧十一例

    同时安装多个操作系统的方法有很多,例如Linux Grub引导.WindowsNT OS Loader引导.System Commander引导.Partition Magic改变激活分区等,但总是比 ...

  8. BZOJ 4084 [Sdoi2015]双旋转字符串

    题解:hash 至今不会unsigned long long 的输出 把B扔进map 找A[mid+1][lenA]在A[1][mid]中的位置 把A[1][mid]贴两遍(套路) 枚举A[mid+1 ...

  9. Python的 5 种高级用法,效率提升没毛病!

    任何编程语言的高级特征通常都是通过大量的使用经验才发现的.比如你在编写一个复杂的项目,并在 stackoverflow 上寻找某个问题的答案.然后你突然发现了一个非常优雅的解决方案,它使用了你从不知道 ...

  10. mysql 启动报错Host name could not be resolved解决办法

    mysql 启动报错信息如下: [root@xxx ~]# 2018-01-26 17:06:35 33 [Warning] Host name 'bogon' could not be resolv ...