• 实例化类----黑科技用法,通过字符串来实例化
class coach
{
public function __construct()
{
echo "欢迎光临北武堂"."\n";
}
public function slogan()
{
echo "吼吼~哈哈~"."\n";
}
}
$wenwa = 'coach';//字符串对应了coach类
$duwa = new $wenwa;
$duwa->slogan();
  • 构造函数
<?php
class mylove
{
public $name="陈培昌";
public function __construct()
{
echo "喜欢练搏击的弟弟"."\n";
}
public function showmyname()
{
echo "获取到的名字是:".$this->name."\n";
}
}
$cpc = new mylove();
$cpc->showmyname();
?> 结果:

  喜欢练搏击的弟弟
  获取到的名字是:陈培昌

  • 继承(与python不同,php是单一继承语言,也就是一个类只能有一个父类)
父类代码如下:
class coach
{
public $master = "老张";
protected $lover = "丁大锅";
private $lovegame = "SM";
public function slogan()
{
echo "吼吼~哈哈~"."\n";
}
}
定义父类coach的子类cpc,继承使用关键词extends
class cpc extends coach
{
public function __construct()
{
//$this->master = $master;
echo "我的师父是".$this->master."__我爱".$this->lover."__喜欢玩"."\n";
} public function self_introduce($name,$age)
{ echo "hello~my name is ".$name."今年芳龄".$age."\n";
}
}
$cpc = new cpc();
$cpc->slogan();
输出结果:

吼吼~哈哈~
hello~my name is 陈培昌今年芳龄21

点评:哇啊哦~这么厉害,子类cpc里没有定义slogan方法居然可以调用!正是继承的魔力之所在!
  • $this详解
在类的声明内部,$this用于指代对象本身;类的内部属性,可以通过$this->去掉$的属性名来访问,另外我们知道,
在类的内部一些特殊修饰符修饰的属性,方法例如private,protected等,
不能在外部访问(说通俗点,就是不能被实例化对象直接访问,调用),那么按照这种逻辑,$this代表了实例化对象,也不能直接访问
but......现实很打脸<?php
class mycoach
{
public $name="陈培昌";
private $favorite = "喜欢丁大锅";
public function __construct()
{
echo $this->name.$this->favorite.PHP_EOL;
}
public function __get($key)
{
return $this->$key;
}
public function __set($key,$value)
{
$this->$key = $value;
}
}
$cpc = new mycoach();
echo "通过魔术方法__get获取到的favorite属性".$cpc->favorite.PHP_EOL;
$cpc->favorite="丁大锅送的手表";
echo "通过魔术方法__set设置后的favorite属性".($cpc->favorite).PHP_EOL;
?> 输出结果

陈培昌喜欢丁大锅
通过魔术方法__get获取到的favorite属性喜欢丁大锅
通过魔术方法__set设置后的favorite属性丁大锅送的手表

 
不过想想也不尽合理,如果$this也不能访问,大概魔术方法 __set(),和__get()也无从实现了

php类知识点滴---类的实例化,构造函数,继承初步的更多相关文章

  1. php类知识点滴---类继承的一些原则

    完全重写 <?php class coach { public function __construct() { echo "欢迎来到~北武堂训练~"; } }     cl ...

  2. php类知识点滴---魔术方法,系统在特定时机触发的方法

    __get()获取私有或受保护属性时调用的方法 <?php class coach { private $chairfit = "徐晓冬"; public function ...

  3. 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)

    [源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...

  4. Python基础知识:类

    初级篇 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 1.面向对象三大特性 ...

  5. JS面向对象的类 实例化与继承

    JS中 类的声明有两种形式: // 类的声明 function Animal() { this.name = 'name' } // ES6中的class声明 class Animal2 { cons ...

  6. C#中派生类调用基类构造函数用法分析

    这里的默认构造函数是指在没有编写构造函数的情况下系统默认的无参构造函数 1.当基类中没有自己编写构造函数时,派生类默认的调用基类的默认构造函数例如: ? 1 2 3 4 5 6 7 8 9 10 11 ...

  7. 转 关于C#中派生类调用基类构造函数的理解

    关于C#中派生类调用基类构造函数的理解 .c#class       本文中的默认构造函数是指在没有编写构造函数的情况下系统默认的无参构造函数 1.  当基类中没有自己编写构造函数时,派生类默认的调用 ...

  8. 得于吾师傅的js知识 js类,单写模板,和私有保护的方法

    js的类的写法: 1,写法一:function内部包含this.function()如代码: var origin_class = function(name) { var lover = ''; t ...

  9. C++类知识总结

    c++类 1.初始化const或引用类型数据成员的唯一机会是在构造函数初始化列表中. 2.使用成员初始化列表时成员初始化的次序:第一个成员首先被初始化.然后是第二个,依次类推. 构造函数初始化列表为类 ...

随机推荐

  1. 从ftp服务器进行批量下载,处理文件名保存时重名的问题,更改重名文件名方式为给后面加1、2、3等数字,保持后缀不变

    公司最近有一个从ftp批量下载文件的需求,但是文件名重复总会报错 没办法,自己下班后写了一个小算法 仿照桶排序的原理,实现了这个小功能,直接上代码: String[] test = {"ha ...

  2. 【LOJ】#3043. 「ZJOI2019」线段树

    LOJ#3043. 「ZJOI2019」线段树 计数转期望的一道好题-- 每个点设两个变量\(p,q\)表示这个点有\(p\)的概率有标记,有\(q\)的概率到祖先的路径上有个标记 被覆盖的点$0.5 ...

  3. BOF和EOF的详细解释 ADO的三个核心对象

    使用ADO连接数据库进行查一个列表询的时候,数据库将查询结果返回查询端,在查询端的内存里面就会有一个列表,这个列表存放的就是查询的结果.这个内存中的列表就是数据集.在你的程序里面rs就是标识的这个数据 ...

  4. Snoopy.class.php使用手册

    Snoopy - the PHP net client v1.2.4 Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单.Snoopy的特点:1.抓取网页的内容 fetch2 ...

  5. http请求之of_ordering_getmiditem

    //Public function of_ordering_getmiditem (string as_instr,string as_key) returns string //string as_ ...

  6. X86逆向11:F12暂停法的妙用

    本节课将介绍F12暂停法的使用技巧,F12暂停法的原理其实很简单,当我们点击OD中的暂停按钮时,OD会将当前的堆栈状态保存起来,并暂停当前窗体的线程执行,直到我们点击运行按钮OD才会唤醒全部线程并继续 ...

  7. SQL注入之DVWA平台测试mysql注入

    今天主要针对mysql常用注入语句进行测试. 测试环境与工具: 测试平台:DVWA,下载地址:http://down.51cto.com/data/875088,也可下载metaspolit-tabl ...

  8. 搭建kafka集群

    1:确认zookeeper集群安装正确,防火墙关闭 2:下载kafka安装文件 cd /usr/local/mydown wget http://mirror.bit.edu.cn/apache/ka ...

  9. Java 时间不一致

    1.new Date() 得到的时间?和系统相差 相差8个小时 2.eclipse控制台打印的时间与系统相差 相差8个小时 3.log4j日志的时间与与系统相差 相差8个小时 上述问题其实是同一个问题 ...

  10. Specialization For SCCM

    JUST A LINK FOR ALL SCCM QUESTION http://eskonr.com/