PHP面向对象编程(imooc)代码合集(三)

class07

overwrite(重写)和Final关键字

overwrite(重写):在子类中编写一个与父类function完全一样的function,实现子类特定的功能

final关键字:final翻译过来就是"最终"的意思。final定义的函数或类,不能被子类重写,如果重写将会报错

<?php
date_default_timezone_set("PRC");
/**
 * 重写和Final
 * 1. 子类中编写跟父类完全一致的方法可以完成对父类方法的重写
 * 2. 对于不想被任何类继承的类可以在class之前添加final关键字
 * 3. 对于不想被子类重写(overwrite, 修改)的方法,可以在方法定义前面添加final关键字
 */

class BaseClass {
   public function test() {
       echo "BaseClass::test() called\n";
   }

   public function moreTesting() {
       echo "BaseClass::moreTesting() called\n";
   }
}

class ChildClass extends BaseClass {

  // 重写时参数不一定要跟父类完全一致
   public function moreTesting($tmp=null) {
       echo "ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
$obj = new ChildClass();
$obj->moreTesting();
?>

class08数据访问补充

 * 1. parent关键字可以用于调用父类被重写的类成员
 * 2. self关键字可以用于访问类自身的成员方法,也可以用于访问自身的静态成员和类常量;不能用于访问类自身的属性;访问类常量时不用在常量名称前面加$符号
 * 3. static关键字用于访问类自身定义的静态成员,访问静态属性时需要在属性名前面添加$符号
<?php
date_default_timezone_set("PRC");
/**
 * 数据访问补充
 * 1. parent关键字可以用于调用父类被重写的类成员
 * 2. self关键字可以用于访问类自身的成员方法,也可以用于访问自身的静态成员和类常量;不能用于访问类自身的属性;访问类常量时不用在常量名称前面加$符号
 * 3. static关键字用于访问类自身定义的静态成员,访问静态属性时需要在属性名前面添加$符号
 */

class BaseClass {
   public function test() {
       echo "BaseClass::test() called\n";
   }

   public function moreTesting() {
       echo "BaseClass::moreTesting() called\n";
   }
}

class ChildClass extends BaseClass {
  public $height="198cm";
  private static $sValue = "static value";
  const CONST_VALUE = ‘A constant value‘;
  public function moreTesting() {
       echo "ChildClass::moreTesting() called\n";
       parent::moreTesting(); // parent关键字可以访问父类被重写的成员
       // step 3 self关键字可以访问该类自身的其他成员
       self::called();
       // step 4 self关键字可以访问该类定义的常量
       echo "CONST_VALUE: " . self::CONST_VALUE."\n";
       // 常量不能被赋值修改
       // self::CONST_VALUE = 11;
       // step 5 static关键字可以访问静态成员,当调用静态属性时记得加$符号
       echo "sValue: " . static::$sValue."\n";
  }
  // step 3
  public function called(){
    echo "ChildClass::called() called\n";
  }
 }
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
$obj = new ChildClass();
$obj->moreTesting();
?>

class09接口

接口和类不同的地方在于,接口定义的方法没有具体实现,所以可以说是“一种没有实现具体方法的类”;要实现接口的方法,必须通过一般的class来实现。引入接口的好处在于,工程开发中把要编写的function功能层次地列举出来,方便其他版块开发人员的调用

/**
 * 接口
 * 1. 接口的基本概念和基本使用方法
 * 2. 接口里面的方法没有具体的实现
 * 3. 实现了某个接口的类必须提供接口中定义的方法
 * 4. 不能用接口创建对象,但是能够判断某个对象是否实现了某个接口
 * 5. 接口可以继承接口(interface extends interface)
 * 6. 接口中定义的所有方法都必须是公有,这是接口的特性。
 */
<?php
date_default_timezone_set("PRC");
/**
 * 接口
 * 1. 接口的基本概念和基本使用方法
 * 2. 接口里面的方法没有具体的实现
 * 3. 实现了某个接口的类必须提供接口中定义的方法
 * 4. 不能用接口创建对象,但是能够判断某个对象是否实现了某个接口
 * 5. 接口可以继承接口(interface extends interface)
 * 6. 接口中定义的所有方法都必须是公有,这是接口的特性。
 */

interface ICanEat {
   public function eat($food);
}

// Human类实现了ICanEat接口
class Human implements ICanEat {
  // 跟Animal类的实现是不同的
  public function eat($food){
    echo "Human eating " . $food . "\n";
  }
}

// Animal类实现了ICanEat接口
class Animal implements ICanEat {
  public function eat($food){
    echo "Animal eating " . $food . "\n";
  }
}

// step1 不同的类可以实现同一个接口,定义接口方法的不同实现
$man = new Human();
$man->eat("Apple");
$monkey = new Animal();
$monkey->eat("Banana");

// step2 尝试删除Human的eat方法并运行
// 实现了某个接口的类必须提供接口中定义的方法

// step3 不能用接口创建对象,但是能够判断某个对象是否实现了某个接口
//$eatObj = new ICanEat();
var_dump($man instanceof ICanEat); // 判断某个对象是否实现了某个接口

// step 4 接口可以继承接口
interface ICanPee extends ICanEat {
  public function pee();
}

class Human1 implements ICanPee{
  public function pee(){}
}

?>
时间: 2025-01-05 02:24:25

PHP面向对象编程(imooc)代码合集(三)的相关文章

Android编程实用代码合集

1.android dp和px之间转换public class DensityUtil { /** * 根据手机的分辨率从 dip 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5

2013计算机视觉代码合集三

Attributes and Semantic Features Relative Attributes – Modified implementation of RankSVM to train Relative Attributes (ICCV 2011). Object Bank – Implementation of object bank semantic features (NIPS 2010). See also ActionBank Classemes, Picodes, and

转载:2013计算机视觉代码合集

转载,原文地址http://blog.csdn.net/daoqinglin/article/details/23607079 -------------------------------------------------------------------------- 来源: http://www.yuanyong.org/cv/cv-code-one.html http://www.yuanyong.org/cv/cv-code-two.html http://www.yuanyong

js验证网址等Javascript常见验证代码合集

发一个利用js验证网址是否正确,email格式是否正确,是否为数字及数字的范围,密码或字符长度及是否相等及要求的最小字符串长度,输入是否为空等Javascript常见验证代码合集,用的上的朋友可以拿去了自行添加整理. 关键的JavaScript代码函数: 查看代码 打印 001 /** 002 * 数据验证框架.增加了对id字段检查出错时,直接在对应后面添加一< span>元素来显示错误信息. 003 * 004 * @author www.phpernote.com 005 * @versi

UIUC同学Jia-Bin Huang收集的计算机视觉代码合集

[转载]UIUC同学Jia-Bin Huang收集的计算机视觉代码合集 原文地址:UIUC同学Jia-Bin Huang收集的计算机视觉代码合集作者:千里8848 UIUC的Jia-Bin Huang同学收集了很多计算机视觉方面的代码,链接如下: https://netfiles.uiuc.edu/jbhuang1/www/resources/vision/index.html 这些代码很实用,可以让我们站在巨人的肩膀上~~ Topic Resources References Feature

计算机视觉与模式识别代码合集第二版two

Topic Name Reference code Image Segmentation Segmentation by Minimum Code Length AY Yang, J. Wright, S. Shankar Sastry, Y. Ma , Unsupervised Segmentation of Natural Images via Lossy Data Compression, CVIU, 2007 code Image Segmentation Normalized Cut

计算机视觉与模式识别代码合集第二版three

计算机视觉与模式识别代码合集第二版three     Topic Name Reference code Optical Flow Horn and Schunck's Optical Flow   code Optical Flow Black and Anandan's Optical Flow   code Pose Estimation Training Deformable Models for Localization Ramanan, D. "Learning to Parse I

JS图片无间断滚动代码合集

JavaScript图片滚动代码合集,向上下左右四个方向的无缝滚动代码,前端设计开发时所能用的一个图片特效,你可只用其中的一种滚动.前端框架分享 .代码   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1

iOS开发中经常用的实用代码合集

iOS开发中经常用的实用代码合集 本文整理了,在iOS开发中我们所遇到一些开发问题的技巧类的代码,让你在开发过程中避免了很多弯路,希望能给你的开发带来帮助和启发. 1.判断邮箱格式是否正确的代码: // 利用正则表达式验证 -( BOOL )isValidateEmail:( NSString  *)email { NSString  *emailRegex =  @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}&

PHP面向对象编程(imooc)代码合集(一)

该课程内容属于PHP语言学习中的中级课程,只要有基本的php语法基础,四小时内上完这门课程绰绰有余.学习PHP面向对象编程,为我们进一步学习更高级的课程打下基础,如后台框架.微信后台的二次开发的学习等等. 课程链接:<PHP面向对象高级实践> 以下是课程的基本内容: 继承.访问控制.Static(静态)关键字.重写.Final关键字.数据访问深入探讨.接口多态和抽象类. 下面用实例代码加以叙述,并打有详细注释,方便初学者学习. 第一篇主要是用一个NBA球星的类加以阐述类的定义和实例化,通俗易懂