抽象方法、接口、继承、多态、图形计算器
来源:互联网 发布:linux程序设计pdf下载 编辑:程序博客网 时间:2024/05/01 19:26
//抽象方法------------------------------abstract Person.class.php <?php //抽象类和抽象方法abstract class Person{ public $name; //定义抽象方法 abstract function say(); function walk(){ }}//$p = new Person; //抽象类不让被实例化class Student extends Person{ function say(){ }}//接口------------------------------interface USB.class.php Mouses.class.php Person.class.php//USB.class.php------------------------------<?php /* * 1、定义接口USB,在接口中有如下抽象方法* start,stop,run,定义子类Mouses,继承接口USB.*/interface USB{ function start(); function run(); function stop();}// Mouses.class.php----------------------------<?phpinclude 'USB.class.php'; //继承接口USBclass Mouses implements USB{ function start(){ } function run(){ } function stop(){ }}//Person.class.php------------------------------<?php //接口应用举例interface Person{ //接口中不能有普通的成员方法和成员属性。仅能有常量 //和抽象方法 const COUNTRY="china"; function say();}//接口对于接口的继承interface Test extends Person{}//类对于接口的继承class Student implements Person{ function say(){ }}//多态举例------------------------------USB.class.php<?php header("Content-Type:text/html;charset=utf-8");//定义接口类interface USB{ function start(); function run(); function stop();}//定义鼠标类,继承USB接口class Mouses implements USB{ function start(){ echo "我是鼠标,我正在加载<br/>"; } function run(){ echo "我是鼠标,我正在运行<br/>"; } function stop(){ echo "我是鼠标,我正在停止<br/>"; }}//添加继承了USB接口的设备 fanclass Fan implements USB{ function start(){ echo "我是风扇,我正在加载<br/>"; } function run(){ echo "我是风扇,我正在运行<br/>"; } function stop(){ echo "我是风扇,我正在停止<br/>"; }}//定义电脑类,应用鼠标类class Computer{ function useUsb(USB $u){ //假设 $u是继承了USB接口的类对象 /*if($u instanceof USB){ $u->start(); $u->run(); $u->stop(); }else{ echo "非USB设备"; }*/ $u->start(); $u->run(); $u->stop(); }}//定义工人类,将电脑和鼠标结合在一起class Worker{ function getWork(){ $c = new Computer(); $m = new Mouses(); //实例化风扇类 $f = new Fan(); $c->useUsb($m); $c->useUsb($f); }}$w = new Worker();$w->getWork();图形计算器 index.php Shape.class.php Rectangle.class.php Circle.class.php Tra.class.php//index.php------------------------------<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>图形计算器</title></head><body><center>图形计算器</center><br/><br/><a href='index.php?action=Rectangle'>矩形</a> | <a href='index.php?action=Tra'>三角形</a> | <a href='index.php?action=Circle'>圆形</a> <?php//自动加载类function __autoload($classname){ //$classname=Rectangle include $classname.'.class.php';}//实例化矩形类//获取类名称$cname = isset($_GET['action'])?$_GET['action']:"";if($cname!=""){ //若用户选择计算矩形 //cname=Rectangle //实例化矩形类 //$cname 等于类名称 $obj = new $cname(); //输出表单 $obj->view(); //当用户POST数据后可以开始计算 if($_POST){ /* * 当用户POST数据以后,就获取到长和宽 * 此时再次实例化Rectangle类给构造方法 * 长和宽 */ $obj = new $cname($_POST); echo $obj->name."的周长:".$obj->cir(); echo "<br/>"; echo $obj->name."的面积:".$obj->area(); }}else{ //若cname为空,则说明用户没有选中图形,此时给提示 echo "<br/>请选择要计算的图形";}?></body></html>//Shape.class.php------------------------------<?php abstract class Shape{ //要求继承抽象类Shape的子类都必须完成计算周长 abstract function cir(); //要求继承抽象类Shape的子类都必须完成计算面积 abstract function area(); //要求继承抽象类Shape的子类都必须完成输出表单 abstract function view();}//Rectangle.class.php------------------------------<?php //矩形类,完成矩形的周长,面积,表单class Rectangle extends Shape{ //声明成员属性长和宽,用于计算 public $name="矩形"; public $width; public $height; //定义构造方法,给成员属性赋初值 function __construct($array=array()){ if(!empty($array)){ $this->width = $array['width']; $this->height = $array['height']; } } //重载父类Shape类中的成员方法cir,计算矩形的周长 function cir(){ //(长+宽)*2 $zc = ($this->height+$this->width)*2; return $zc; } //由于Rectangle类继承了Shape类,必须重载Shape //类中的全部抽象成员方法 area function area(){ //面积= 长*宽 $mj = $this->height*$this->width; return $mj; } //重载 view() function view(){ //输出表单 echo "<form action='index.php?action=Rectangle' method='post'>"; echo $this->name."的宽:<input type='text' name='width' /><br/><br/>"; echo $this->name."的高:<input type='text' name='height' /><br/><br/>"; echo "<input type='submit' value='计算' />"; echo "</form>"; }} //Circle.class.php------------------------------<?php class Circle extends Shape{ //定义成员属性 public $r; //半径 public $name = "圆形"; //定义构造方法 给成员属性赋初值 function __construct($array=array()){ //仅当$array不为空时,才给成员属性 //$this->r赋初值 if(!empty($array)){ $this->r = $array['r']; } } //Circle继承了Shape类。则Circle必须重载Shape类 //中的抽象成员方法 function cir(){ //圆的周长=2*pi()*r $zc = 2*pi()*$this->r; return $zc; } function area(){ $mj = pi()*$this->r*$this->r; return $mj; } function view(){ //输出表单 echo "<form action='' method='post'>"; echo $this->name."的半径:<input type='text' name='r' /><br/><br/>"; echo "<input type='submit' value='计算' />"; echo "</form>"; }}//Tra.class.php------------------------------<?php //定义三角形类class Tra extends Shape{ public $name="三角形"; public $bian1; //三角形的三条边之一 public $bian2; public $bian3; //定义构造方法 给成员属性赋初值 function __construct($array=array()){ if(!empty($array)){ //当数组$array非空,也就是有POST值时才开始赋值 $this->bian1 = $array['bian1']; $this->bian2 = $array['bian2']; $this->bian3 = $array['bian3']; } } //在三角形类中重载抽象类Shape中的抽象成员方法 function cir(){ //三角形的周长=边1+边2+边3 $zc = $this->bian1+$this->bian2+$this->bian3; return $zc; } //继承Shape类中的抽象成员方法area. function area(){ //计算三角形的面积 海伦公式 $p = ($this->bian1+$this->bian2+$this->bian3)/2; $mj = sqrt($p*($p-$this->bian1)*($p-$this->bian2)*($p-$this->bian3)); return $mj; } //继承Shape类,重载Shape类中的全部抽象方法,重载function view() function view(){ //输出表单 echo "<form action='' method='post'>"; echo $this->name."的边1:<input type='text' name='bian1' /><br/><br/>"; echo $this->name."的边2:<input type='text' name='bian2' /><br/><br/>"; echo $this->name."的边3:<input type='text' name='bian3' /><br/><br/>"; echo "<input type='submit' value='计算' />"; echo "</form>"; }}
0 0
- 抽象方法、接口、继承、多态、图形计算器
- 继承、多态、抽象、接口
- 抽象方法 接口 多重继承
- 方法,面向对象,构造方法,继承,多态,抽象类,接口
- C#中的继承 (继承、抽象类和抽象方法、接口)
- C#中的继承 (继承、抽象类和抽象方法、接口)
- java 继承 方法重写 自动转型 多态 接口 抽象类
- java 继承 方法重写 自动转型 多态 接口 抽象类
- Java类、属性、方法、对象、继承、多态、接口、抽象类...
- 继承、多态、抽象类、接口
- 接口,抽象类,继承,多态
- Java继承、抽象、接口、多态
- 继承,抽象类,接口,多态
- 继承、多态、接口、抽象类
- 封装、多态、抽象、继承、接口
- 继承、接口、虚方法、抽象类
- 接口、类、抽象类、继承、构造函数、方法重写、方法重载、自动转型、多态、引用传递
- java [继承]-[接口]-[抽象类]-[多态]-[Object]
- 51nod--1770数数字
- LeetCode 22 Generate Parentheses
- 新的开始
- FP-growth算法高效实现
- 2016年总结
- 抽象方法、接口、继承、多态、图形计算器
- 微信小程序_文笔记+(第一章)
- GC
- PDO(php data object)+事务
- LeetCode 23 Merge k Sorted Lists
- JavaScript基础1
- Android真机调试,手机登录电脑服务器方法
- JavaScript基础2
- Python3.x和Python2.x的区别