实例

echo "

类的申明与实例化

";

class test1 {

public function hello(){

return "我是一个类";

}

}

$test= new test1();

echo $test->hello(),"
";

$test->hello1 = function (){

return "我是另外一个类";

};

echo call_user_func($test->hello1);

echo "


";

echo "

类常量与类的属性重载

";

class test2{

//使用const的关键字来创建类常量,使用大写来定义常量的名称

const TEST = "我是一个测试2";

//创建三个私有属性

private $name;

private $age;

private $salary;

public  function __construct($name,$age,$salary)//使用构造方法对三个私有属性进行初始化

{

$this->name = $name;

$this->age = $age;

$this->salary = $salary;

}

//设置获取器使得属性重载可以访问私有的条件,还可以设置条件进行访问的限制

public function __get($name)

{

if ($name == 'salary'){

exit( "你无权查看");

}else{

return $this->$name;

}

}

//设置设置器使得属性修改访问私有条件的属性,

public function __set($name, $value)

{

if ($name == 'salary'){

exit( "你无权修改");

}else{

return $this->$name = $value;

}

}

//设定属性查询规则

public function __isset($name)

{

if ($name == 'salary'){

return false;

}

return isset($this->$name);

}

//设定属性销毁方法

public function __unset($name)

{

if ($name == 'salary' || $name == "name"){

return false;

}

unset($this->$name);

}

}

//使用类的名称加双冒号访问类中的常量

echo test2::TEST,"
";

$test2 = new test2('test','25','6000');

echo $test2->name,"
";

echo $test2->age,"
";

//$test2->salary = 5000;

$test2->name = "小王";

echo $test2->name,"
";

echo isset($test2->salary) ? "有
" : "没有
";

echo isset($test2->name) ? "有
" : "没有
";

unset($test2->name);

echo $test2->name,"
";

unset($test2->age);

echo $test2->age,"
";

echo "


";

echo "

类的继承与方法的重写

";

//创建一个父类

class test3 {

public $name;

protected $age;

const TEST_1 = "我是父类的常量";

public function __construct($name,$age)

{

$this->name =$name;

$this->age =$age;

}

}

//创建一个子类继承父类属性和方法

class test3_1 extends test3

{

private $salary;

public function __construct($name, $age,$salary)

{

parent::__construct($name, $age);//引用父类的构造方法进行重写

$this->salary = $salary;

}

public function __get($name)

{

return $this->$name;

}

public function __isset($name)

{

if ($name == "salary"){

return false;

}

return isset($this->$name);

}

}

$test3_1 = new test3_1("小明",20,5000);

echo test3_1::TEST_1;

echo $test3_1->name,"
";

echo $test3_1->age,"
";

echo $test3_1->salary,"
";

echo isset($test3_1->salary) ? "有
":"没有
";

echo isset($test3_1->name) ? "有
":"没有
";

echo "


";

echo "

类中静态成员的声明和访问

";

class test4{

//静态类的关键字是static,在3p后面紧跟着.

public static $name = "小红";

public static $age="28";

public static $salary="6000";

}

echo test4::$name,"
";

echo test4::$age,"
";

echo test4::$salary,"
";

运行实例 »

点击 "运行实例" 按钮查看在线实例

php 类名 属性6,php基础知识(类中属性和方法练习)--2018年9月6日14:01:15相关推荐

  1. php属性赋值吗,php – 设置类中属性的默认值

    我需要编写一个类,用户可以根据需要设置自己的值.我需要为属性设置默认值. 我怎么能以正确的方式做到这一点.这是我需要实现的一个例子 class Test { protected $var1; prot ...

  2. 文件的属性 计算机知识,计算机基础知识文件的属性(二)

    计算机基础知识文件的属性(二) 我们就继续往下讲."名称"后面是"大小",表示文件的信息量,也就是说它在硬盘上占用的空间.还记得我们说过硬盘的和软盘的大小吗? ...

  3. 第二十九节:Java基础知识-类,多态,Object,数组和字符串

    前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...

  4. Java_面向对象基础(类、对象、方法和构造函数)

    Java的面向对象基础(类.对象.方法和构造函数) 面向对象的基本概念 面向对象的设计思想 什么是类 什么是对象 类的定义 设计面向对象的例子 步骤一:设计动物这个类 步骤二:创建具体的动物 步骤三: ...

  5. python隐藏部分代码_python隐藏类中属性的3种实现方法

    方法一: 效果图一: 代码一: # 定义一个矩形的类 class Rectangle: # 定义初始化方法 def __init__(self,width,height): self.hidden_w ...

  6. python定义私有变量的方法_Python怎么修改私有属性 如何访问python类中的私有方法...

    python 类为什么不能定义私有属性和方法 因为b.name[0] = 'zhang'修改的是类属性,类属性是全局的,所有的实例共享,如果想私有化,可以添加 def __init__( self ) ...

  7. iptables的基础知识-iptables中的状态检测

    2019独角兽企业重金招聘Python工程师标准>>> iptables的基础知识-iptables中的状态检测:iptabels被认为是Linux中实现包过滤功能的第四代应用程序. ...

  8. java的反射机制--关于类中属性的反射。

    之前对于反射的理解只是认为,通过一个类的名字动态创建出一个类来. 其实,知道类中属性的名字也可以,动态的得到该属性. 比如 class A{ S = "abc": } 我们可以动态 ...

  9. 古琴入门基础知识【古琴打谱的方法一】——唐畅古琴

    古琴的曲谱,从明初起,被保存下来的据近年中央民族音乐研究所收集和调查所得,谱集方面达一百四十四种之多,其中略去重复,共有三千三百六十五个不同的传谱,六百五十八个不同的传曲,数量真不算少. 然古人所制的 ...

最新文章

  1. 属性子集选择的基本启发方法_图网络基本属性
  2. Ajax Control Toolkit 32个服务器端控件
  3. AI:《A Simple Tool to Start Making Decisions with the Help of AI—借助人工智能开始决策的简单工具》翻译与解读
  4. leetcode第一刷_Construct Binary Tree from Inorder and Postorder Traversal
  5. c#后台如何导出excel到本地_C#后台导出Excel
  6. Mongo使用navicat解除14天限制
  7. 金山吹响讨伐灰鸽子的号角
  8. LeetCode 1634. 求两个多项式链表的和
  9. 线程之间通信 等待(wait)和通知(notify)
  10. c++ windows 光标操作_电脑操作常用快捷键
  11. 计算机装配调试员培训内容.doc,电子计算机(微机)装配调试员文档.doc
  12. Mac窗口小部件,原来还有这么多使用细节!
  13. 【优化算法】先导粘菌算法(LSMA)【含Matlab源码 1436期】
  14. 英语口语收集(十六)
  15. Java求两点的中点坐标_计算两点坐标距离与中点坐标
  16. 龙迅LT7911D Type-C/DP/eDP to MIPI DSI/CSI/LVDS 信号转换芯片
  17. 什么是 ARPU 为什么你应该关心 ARPU?
  18. 云计算学习路线教程大纲课堂笔记:构建企业级WIKI及工单系统
  19. n个台阶,每次都可以走一步,走两步,走三步,走到顶部一共有多少种可能
  20. Python课程作品设计——基于EXCEL的批量重命名工具

热门文章

  1. ffmpeg 视频合并
  2. empty 与 remove 的区别
  3. GJM:用C#实现网络爬虫(一) [转载]
  4. 【SSH进阶】No result defined for action **的解决方案
  5. Ajax基础--创建XMLHttpRequest对象
  6. linux基础命令学习笔记(二)
  7. JavaScript中的match方法和search方法
  8. 第一百三十一节,JavaScript,封装库--CSS
  9. mysql主从复制读写分离
  10. [批处理]NetstatFilter快速查找端口被占用问题