`

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

分享到:
评论

相关推荐

    Python3经典100例(Python3入门习题)含答案doc版最新版本

    本教程汇集了网友的精心总结与整理,旨在通过100个实例,覆盖Python入门级别的习题及其解答,以帮助学习者掌握Python 3的基础编程技能。这些习题覆盖了广泛的编程问题,从基础的数字操作到复杂的算法实现。我们鼓励...

    鸡啄米:VS2010-MFC编程入门教程(1-55).docx

    - **相关类**:列出与属性页对话框相关的类,并简要说明每个类的功能。 - **向导对话框的创建及显示**: - **向导对话框概述**:介绍向导对话框的基本概念。 - **创建显示流程**:指导如何创建并显示向导对话框...

    JAVA视频 第05章:构造方法-学生类-String类

    内容包括三章:1、构造方法与匿名对象;2、实例讲解—类设计分析(学生类);3、String类。

    SQL触发器实例讲解

    SQL 触发器实例讲解 在本文中,我们将详细介绍 SQL 触发器的概念、类型和应用场景。触发器是 SQL Server 中的一种特殊存储过程,用于对某一个表的操作时触发某种条件,从而执行一段程序。常见的触发器有三种:...

    java编程定义学生类,学校类,录取类实现录取

    根据给定的信息,我们可以将相关的知识点分为三个主要部分:学校类、学生类和录取类。 ### 一、学校类(School) #### 类的功能与结构 学校类的主要功能是存储学校的录取分数线,并提供设置和获取该分数线的方法。...

    升级PHP5的理由:PHP4和PHP5性能大对比

    ### 升级PHP5的理由:PHP4和PHP5性能大对比 #### 引言 随着技术的不断进步和发展,PHP语言也在不断地更新迭代。本文旨在通过对比PHP4与PHP5的性能表现,来探讨是否应该从PHP4升级到PHP5,并提供实际的测试数据作为...

    HTML5 CSS3 : 进度条的实现实例源码

    在本实例中,我们将深入探讨如何使用HTML5和CSS3来实现一个具有视觉吸引力的进度条。进度条在网页中广泛应用,如文件上传、加载过程、任务进度指示等,能有效地向用户反馈操作状态。 首先,HTML5引入了一个新的元素...

    Java语言教程及案例

    - **对象**是类的实例,每个对象都拥有自己的状态(成员变量)和行为(成员方法)。 - 示例代码: ```java class Animal { String name; void makeSound() { System.out.println(name + " makes a sound.");...

    软件工程实例:总体设计说明书

    本软件系统的名称:校级(公共课)学生成绩管理系统。2.该软件系统同其他系统或其他机构的基本的相互来往关系:该系统基于IE浏览器,版本为6.0及以上,支持windows系列平台。定义关键词如下:...

    abstract class和interface有什么区别?

    - 抽象类是一种不能被实例化的类,它可能包含抽象方法(没有方法体的方法)和具体方法(有方法体的方法)。 - 子类继承抽象类时,必须实现其中的所有抽象方法,除非该子类也是抽象类。 - 抽象类可以提供默认实现...

    2017Java期末考试真题100道(附答案解析)

    - **答案**: 给定代码片段中`Test`类继承自`Thread`类,并重写了`run()`方法。但在`main`方法中只创建了`Test`对象并调用了`go()`方法,而`go()`方法中创建了两个`Test`对象并调用了`start()`方法。这将创建并启动两...

    100家大公司JAVA笔试题汇总

    - 在提供的代码中,`Alpha`类继承自`Base`类,并在`main`方法中创建了两个对象:一个是`Alpha`对象,另一个是`Base`对象。由于`Alpha`类没有定义自己的构造方法,因此会默认调用父类`Base`的无参构造方法。因此,...

    C#继承学习实例

    本教程针对在校学生等初学者,旨在通过实例深入理解C#中的继承概念。 一、继承的概念 继承是面向对象编程中的一个关键概念,它允许子类自动获取父类的非私有成员(包括字段、属性和方法)。这使得子类可以基于现有...

    Java的考试复习资料整理

    - 接口可以被多个类实现,但抽象类不可以被多个类继承。 - 抽象类可以有构造函数,接口没有构造函数。 - 抽象类可以继承其他类和接口,接口只能继承其他接口。 - 接口支持多继承,抽象类只支持单继承。 - **...

    Oracle10g视图的神图

    这类视图与V$ views类似,但额外包含了一个实例ID(inst_id)字段,允许在多实例环境中获取跨所有实例的数据。 **特点:** - **实例ID(inst_id):** 这个字段使得管理员可以在RAC环境中查询来自所有实例的信息,...

    python实现车道线识别程序

    本项目是利用Python编程语言结合OpenCV库来实现这一功能的实例。OpenCV是一个强大的开源计算机视觉库,提供了丰富的图像和视频处理功能。 在Python中,车道线识别通常分为以下几个步骤: 1. **图像预处理**:首先...

    C++大学教程

    2.10 构造算法与自上而下逐步完善:实例研究3(嵌套控制结构)--------------54 2.11 赋值运算符-------------------------------------------------------57 2.12 自增与自减运算符----------------------------...

Global site tag (gtag.js) - Google Analytics