//抽象方法------------------------------
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----------------------------
<?php
include 'USB.class.php';
//继承接口USB
class 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接口的设备 fan
class 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>";
}
}
一、选择题1.( A )模式的关键是将一个对象定义为原型,并为其提供复制自己的方法。A.原型 B.创建者 C.工厂方法 D.迭代2.下面的类图表示的是哪个设计模式?(B ) A装饰模式(Decorator) B策略模式(Strategy)C桥接模式(Bridge) D观察者模式(Observer)转存失败重..._1671465600
> 大小写转换问题,先看一下大小写字母的ASCII码值A 十六进制 41H 十进制65B 十六进制 42H 十进制66C 十六进制 43H 十进制67D 十六进制 44H 十进制68E 十六进制 45H 十进制69F 十六进制 46H 十进制70a 十六进制 6..._1671465600
DOM:<inputid="uniqueId" type="file" accept=".txt,.ppt"onChange={fileChange} multiple/>注意:1、当一个页面多个upload input,id必须唯一,不然fileChange后set值会错乱2、fileChange上传的file temp,不能将file temp转换成String再转换回Object。如: (1)例子:fileChange后得到的变量为data,JSO...
帝高阳之苗裔(yì)兮,朕皇考曰伯庸。高阳:颛顼之号。苗裔:苗,初生的禾本植物。裔,衣服的末边。此苗裔连用,喻指子孙后代。朕:我。皇考:对亡父的尊称。摄提贞于孟陬(zōu)兮,惟庚(gē...
Qt 发布公告:http://download.qt.io/official_releases/qt/5.15/5.15.0/OFFLINE_REAMDE.txt内容是:从 Qt 5.15 开始,开源版本,无论是不是 LTS,都只能在线安装。如果确实需要离线安装包,则要购买 Qt for Small Business 产品:https://www.qt.io/blog/available-now-qt-for-small-business这里举例 Qt 5.15 的在线安装方法。下载速度大概在
AES算法基本知识<br />AES的全称是Advanced Encryption Standard,即高级加密标准。该项目由美国国家标准技术研究所(NIST)于1997年开始启动并征集算法,在2000年确定采用Rijndael 作为其最终算法,并于2001年被美国商务部部长批准为新的联邦信息加密标准(FIPS PUB 197)。<br />FIPS PUB 197中说明该标准的正式生效日期是2002年5月26日。该标准将被NIST每5年重新评估一次。<br />AES采用的Rijndael算法的设计者是J
· Miracast: 关于Miracast的基础知识,大家可以baidu,google自行搜索,作为入门进行学习。如果进入开发阶段,则需要学习三篇白皮书:Wi-Fi_Display_Specification_v1.1、WiFi_P2P_Technical_Specification_v1.2及HDCP Interface Independent Adaptation Specifi...
html5 canvas清除绘制问题,使用离屏canvas,不影响图片代码如下,照片替换一下。效果如下:&amp;amp;amp;amp;lt;!DOCTYPE html&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;html lang=&amp;amp;amp;quot;en&amp;amp;amp;quot;&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;head&
分析模型是高层次的系统视图,在语义上,分析类不代表最终的实现。它是计算机系统元素的高层抽象。笔者认为分析模型正是OO设计的核心,而设计类只是OO的实现手段。分析模型是MVC模式的经典应用。对比分析类的名称,MVC模式,读者应该能够发现分析类在OO和商业目标中精妙的对应关系:人,事,物,规则--actor,boundary,engity,control。这就是为什么笔者说分析模型是OO设计的核心。
点击关注公众号,Java干货及时送达中秋快乐,今天文末又要送 10本书,不要错过~想从Java小白进阶到Java架构师,这一篇Java学习路线汇总内容不容错过!我搜罗了各大主流公司面试和...
Java中是使用大括号括起来的语句块,用于完成一个相对独立的逻辑功能,这种语句被称作()。更多相关问题下列哪项措施不能提高砌体受压构件的承载力()?商业银行办理个人储蓄存款业务,应当遵循地原则()。(商业银行法第29条)违反本法规定,()由有关主管部门按照各自职责分工,没收违法所得、违法生产经营的食品和用于违法生产经营的工具、设备、原料等物品;违法生产经营的食品货值金额不足一万元的,并处二千元以上...
Optional类提供了大约10种方法,我们可以使用它们来创建和使用Optional类,下面将介绍如何使用它们。创建一个Optional类这是用于创建可选实例的三种创建方法。static [Optional] [empty]()返回一个空的Optional实例。// Creating an empty optionalOptional empty = Optional.empty();在返回一个...