`

PHP类继承实例: 高中学生 -- 学生--人

 
阅读更多

PHP 类的继承(extends)

 

编写了两个文件:person-student.inc和extends.php。

person-student.inc是一个类文件,包含了对一个Person的定义,其中Student类继承了Person类,实现如下所示:

 

<?php
class Person{
   var $id;
   var $name;
   var $age;
   var $email;
   function Person($id,$name,$age,$email){
    $this->id = $id;
    $this->name = $name;
    $this->age = $age;
    $this->email = $email;
   }

 

   function setId($id){
    $this->id = $id;
   }
   function setName($name){
    $this->name = $name;
   }
   function setAge($age){
    $this->age = $age;
   }
   function setEmail($email){
    $this->email = $email;
   }

 

   function getId(){
    return $this->id;
   }
   function getName(){
    return $this->name;
   }
   function getAge(){
    return $this->age;
   }
   function getEmail(){
    return $this->email;
   }

 

   function display(){
    echo "<B>身份证号:</B>".$this->id."<BR>";
    echo "<B>真实姓名:</B>".$this->name."<BR>";
    echo "<B>实际年龄:</B>".$this->age."<BR>";
    echo "<B>联系邮箱:</B>".$this->email."<BR>";
    echo "<BR>";
   }
}

 


class Student extends Person{
   var $sno;
   var $school;
   var $grade;
   var $score;

 

   function Student($sno,$name,$school,$grade,$score){
    $this->sno = $sno;
    $this->name = $name;
    $this->school = $school;
    $this->grade = $grade;
    $this->score = $score;
   }

 

   function setSno($sno){
    $this->sno = $sno;
   }
   function setSchool($school){
    $this->school = $school;
   }
   function setGrade($grade){
    $this->grade = $grade;
   }
   function setScore($score){
    $this->scorer = $score;
   }

 

   function getSno(){
    return $this->sno;
   }
   function getSchool(){
    return $this->school;
   }
   function getGrade(){
    return $this->grade;
   }
   function getScore(){
    return $this->score;
   }

 

   function display(){
    echo "<B>学生个人信息如下:</B><BR><BR>";
    parent::display();
    echo "<B>学生学号:</B>".$this->sno."<BR>";
    echo "<B>所在学校:</B>".$this->school."<BR>";
    echo "<B>所在年级:</B>".$this->grade."<BR>";
    echo "<B>高考分数:</B>".$this->score."<BR>";
    echo "<BR>";
   }

 

   function enroll($score){
    $flag = floor($score/100);
    echo "<B>你的考试录取估计如下:</B><BR>";
    switch($flag){
     case 7:
     case 6:
      echo "你的分数为".$score.",好强啊,能够考取一个名牌大学。<BR>";
      break;
     case 5:
      echo "你的分数为".$score.",能够考取一个普通重点大学。<BR>";
      break;
     case 4:
      echo "你的分数为".$score.",能够考取一个普通本科大学。<BR>";
      break;
     case 3:
      echo "你的分数为".$score.",能够考取一个专科大学。<BR>";
      break;
     default:
      echo "你的分数也太低了点,继续努力吧。<BR>";
      break;
    
    }
   }
}
?>

 

Student类继承了Person类,继承使用关键字extends;

上面Student类又新增了一些独有的成员变量;

同 时Student类重写了Person类中的同名方法display()方法,在Student类中该方法使用parent关键字调用了基类的 display()方法,调用基类方法使用操作符“::”,当然也可以使用类名来调用(也就是说,parent::display();与 Person::display();是等价的);

Student类又增加了一个enroll()方法的实现。

测试页面为extends.php,实现如下所示:

 

<?php
require("person-student.inc");
$student = new Student(2008001,"Shinrdrn","长春28中","高三",666);

 

$student->setId("2224031983011999x");
$student->setAge(26);
$student->setEmail("");

 

$student->display();

 

$student->enroll($student->getScore());

 

unset($student);
?>

 

启动Apache服务器,在IE地址栏中键入:

http://localhost/shirdrn/oo/extends.php

浏览页面显示结果如下所示:

上面的实现,是将Person类和Student类写在了同一个类文件中,当然也可以将他们分开,每一个类写在一个单独的类文件中,下面使用两个类文件分别实现Person类和Student。

Person类的实现为person.inc,如下所示:

 

<?php
class Person{
   var $id;
   var $name;
   var $age;
   var $email;
   function Person($id,$name,$age,$email){
    $this->id = $id;
    $this->name = $name;
    $this->age = $age;
    $this->email = $email;
   }

 

   function setId($id){
    $this->id = $id;
   }
   function setName($name){
    $this->name = $name;
   }
   function setAge($age){
    $this->age = $age;
   }
   function setEmail($email){
    $this->email = $email;
   }

 

   function getId(){
    return $this->id;
   }
   function getName(){
    return $this->name;
   }
   function getAge(){
    return $this->age;
   }
   function getEmail(){
    return $this->email;
   }

 

   function display(){
    echo "<B>身份证号:</B>".$this->id."<BR>";
    echo "<B>真实姓名:</B>".$this->name."<BR>";
    echo "<B>实际年龄:</B>".$this->age."<BR>";
    echo "<B>联系邮箱:</B>".$this->email."<BR>";
    echo "<BR>";
   }
}
?>

 

Student类的实现为student.inc,如下所示:

 

<?php
require("person.inc");
class Student extends Person{
   var $sno;
   var $school;
   var $grade;
   var $score;

 

   function Student($sno,$name,$school,$grade,$score){
    $this->sno = $sno;
    $this->name = $name;
    $this->school = $school;
    $this->grade = $grade;
    $this->score = $score;
   }

 

   function setSno($sno){
    $this->sno = $sno;
   }
   function setSchool($school){
    $this->school = $school;
   }
   function setGrade($grade){
    $this->grade = $grade;
   }
   function setScore($score){
    $this->scorer = $score;
   }

 

   function getSno(){
    return $this->sno;
   }
   function getSchool(){
    return $this->school;
   }
   function getGrade(){
    return $this->grade;
   }
   function getScore(){
    return $this->score;
   }

 

   function display(){
    echo "<B>学生个人信息如下:</B><BR><BR>";
    parent::display();
    echo "<B>学生学号:</B>".$this->sno."<BR>";
    echo "<B>所在学校:</B>".$this->school."<BR>";
    echo "<B>所在年级:</B>".$this->grade."<BR>";
    echo "<B>高考分数:</B>".$this->score."<BR>";
    echo "<BR>";
   }

 

   function enroll($score){
    $flag = floor($score/100);
    echo "<B>你的考试录取估计如下:</B><BR>";
    switch($flag){
     case 7:
     case 6:
      echo "你的分数为".$score.",好强啊,能够考取一个名牌大学。<BR>";
      break;
     case 5:
      echo "你的分数为".$score.",能够考取一个普通重点大学。<BR>";
      break;
     case 4:
      echo "你的分数为".$score.",能够考取一个普通本科大学。<BR>";
      break;
     case 3:
      echo "你的分数为".$score.",能够考取一个专科大学。<BR>";
      break;
     default:
      echo "你的分数也太低了点,继续努力吧。<BR>";
      break;
    
    }
   }
}
?>

 

测试文件为ext.php,在该文件中使用Student类只需要包含student.inc文件:

require("student.inc");

实现代码如下所示:

 

<?php
require("student.inc");
$student = new Student(2008001,"Zhangsan","XX重点中学","高三",260);

 

$student->setId("5004031988011999x");
$student->setAge(22);
$student->setEmail("");

 

$student->display();

 

$student->enroll($student->getScore());

 

unset($student);
?>

 

启动Apache服务器,在IE地址栏中键入:

http://localhost/shirdrn/oo/ext.php

浏览页面显示结果如下所示:



来源:http://hi.baidu.com/shirdrn/item/19b0a6b152894476254b09a9

分享到:
评论

相关推荐

    OOP-PHP-Inventaris:我在职业高中测试中的面向对象编程PHP

    3. 继承(Inheritance):继承允许一个类(子类)继承另一个类(父类)的属性和方法。这样可以实现代码重用,并构建分层的类结构。在PHP中,使用"extends"关键字来实现继承: ```php class AdvancedInventory ...

    学校网站模板免费下载

    适用于中小学、高中及职业中学,因为这些机构的网站需要展示教育的严谨性同时保持吸引力。此外,它还提及可以用于政府或事业单位网站,表明这个模板的通用性和灵活性。 【标签】"学校网站模板"和"免费学校网站模板...

    福兴讯V587对讲机写频,调频软件 福摩斯特V587

    福兴讯V587对讲机写频,调频软件。福摩斯特V587对讲机写频,调频

    uni-helper_vite-plugin-uni-tai_1742854282.zip

    app开发

    LangChain框架详解:大语言模型应用开发的核心模块与实践

    内容概要:本文介绍了LangChain这一开源框架,它专为开发基于大型语言模型(LLM)的应用程序而设计。文章阐述了LangChain的核心理念、架构组成及其重要性。LangChain通过模块化设计解决了大模型应用开发中的效率低下和局限性问题,提供了标准化的接口和丰富的抽象层,使开发者能够轻松接入不同大模型并构建高效的应用程序。文中详细讲解了几个关键模块,包括Model I/O、Retrieval、Chains、Memory、Agents和Callbacks,以及如何安装和使用LangChain进行开发。此外,还展示了具体的代码示例,如如何调用OpenAI的API、构建LLMChain链路、设置回调机制和实现对话记忆功能。 适合人群:对大语言模型有一定了解并且有兴趣开发基于LLM的应用程序的研发人员和技术爱好者。 使用场景及目标:①帮助开发者快速掌握LangChain的基本概念和使用方法;②提供实用的代码示例,便于开发者实际操作;③解释如何通过LangChain克服大模型应用开发中的常见难题,如模型差异、输出不稳定等。 阅读建议:鉴于LangChain涉及较多的专业术语和技术细节,建议读者在阅读时结合官方文档和示例代码一起学习,尤其是对于核心模块的理解和实践。同时,关注GitHub上的最新版本更新,以获取最新的特性和改进。

    网络伴侣 iCompanion 2.1

    网络伴侣 iCompanion 2.1 网络计费软件,功能全面,支持ISDN

    移动开发_Flutter_简约聊天_纸聊APP_1742846962.zip

    app开发

    《基于YOLOv8的交通事故自动报警系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    《基于YOLOv8的八段锦练习指导系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    前端开发_UniApp_云开发_JsSdk_全端适配实战讲解_1742852088.zip

    app开发

    移动开发_Flutter_轮子推荐_开发效率提升_1742851671.zip

    移动开发_Flutter_轮子推荐_开发效率提升_1742851671.zip

    往复活塞杆密封件热弹流润滑仿真:Python实现与解析(复现论文,含详细可运行代码及解释)

    内容概要:本文详细介绍了往复活塞杆密封件在瞬态条件下热弹流润滑仿真的Python实现。首先定义了几何、材料和工况参数,然后分别构建了流体力学、热力学和固体力学模型。流体力学模型使用有限差分法求解瞬态雷诺方程,热力学模型考虑了温度和压力对粘度的影响,固体力学模型则采用了Mooney-Rivlin超弹性模型和Prony级数描述的粘弹性松弛。最后通过耦合求解实现了整个系统的时间积分,并绘制了液膜厚度和压力分布图。文中还讨论了模型的特点、简化假设以及扩展建议。 适合人群:机械工程领域的研究人员和技术人员,尤其是对密封件性能优化感兴趣的从业者。 使用场景及目标:适用于研究往复活塞杆密封件的工作机理及其在不同工况下的表现,帮助工程师理解和预测密封件的动态特性,从而改进设计和选材。 其他说明:该实现基于论文中的理论框架,但在实际应用时可能需要进一步调整和完善。

    人人商城V3-3.2.1版本.zip 亲测能用

    人人商城V3-3.2.1版本.zip 亲测能用

    《基于YOLOv8的灯光设备监测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    Java面向对象编程,出现的示例代码

    Java面向对象编程,出现的示例代码

    蓝桥杯python相关资源,真题,蓝桥杯,蓝桥杯Python练习系统题库,蓝桥杯Python练习系统题库

    蓝桥杯python,蓝桥杯python相关资源,真题,蓝桥杯,蓝桥杯Python练习系统题库,蓝桥杯Python练习系统题库

    fsfzdgdfrgbzgr

    rgrgdfsegfasgrsredgf

    《基于YOLOv8的冲浪运动分析系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    Lotus Notes 4.65

    Lotus Notes 4.65 是 IBM 旗下早期版本的企业级协作平台,主要面向办公自动化和非结构化数据管理领域。以下为综合信息整理: 一、版本背景与定位 核心架构 Lotus Notes 4.65 属于客户端-服务器架构的早期版本,其服务器端为 Lotus Domino18。 客户端功能:集成电子邮件、日历、联系人管理、文档数据库访问16。 服务器功能:支持分布式文档存储、跨平台数据同步及安全权限管理18。 技术特性 数据库技术:采用非结构化文档数据库,支持表单、视图、代理等自定义数据管理工具68。 工作流引擎:内置开发环境(Domino Designer),可定制审批流程、文档跟踪等企业级应用18。 跨平台兼容性:支持 Windows 95/98、NT 等早期操作系统,依赖 TCP/IP 协议实现网络通信25。

Global site tag (gtag.js) - Google Analytics