代码练习
1、代码
<?php
interface iComputer
{
function computer();
}
abstract class aComputer implements iComputer
{
public function write(){
return '<br>计算完成';
}
}
class Computer extends aComputer
{
public $a;
public $b;
public $str;
// 变量类型转换:intval()、floatval()、strval()
// 变量类型强制转换(改变变量本身):intval()、floatval()、strval()
public function __construct($a,$b,$c)
{
$this->a=$a;
$this->b=$b;
$this->str=$c;
}
function computer()
{
switch($this->str){
case '+':
// 连接.运算符和+运算符同级,所以+运算需要括起来
return "{$this->a}+{$this->b}等于".($this->a+$this->b);
break;
case '*':
return "{$this->a}*{$this->b}等于".$this->a*$this->b;
break;
case '/':
return "{$this->a}➗{$this->b}等于".$this->a/$this->b;
break;
case '-':
//连接.运算符和-运算符同级,所以-运算需要括起来
return "{$this->a}-{$this->b}等于".($this->a-$this->b);
break;
default:
return "{$this->a}和{$this->b}".'无法进行合法运算';
}
}
}
$sum=new Computer(20,23,'+');
// echo $sum->b;
echo $sum->computer();
echo $sum->write();
echo 'hr';
echo '<br>';
trait demo
{
function write($a){
printf('trait中的方法:<pre>%s</pre>',print_r($a,true));
}
}
class A
{
function write($a){
printf('A类中的方法:<pre>%s</pre>',print_r($a,true));
}
}
class B extends A
{
use demo;
function write($a){
printf('B类中的方法:<pre>%s</pre>',print_r($a,true));
}
}
class C extends A
{
use demo;
}
class D extends A
{
// use demo;
}
(new B())->write([1,2,3,4]);
(new C())->write([1,2,3,4]);
(new D())->write([1,2,3,4]);
2、运行结果
总结;
1、interface接口类成员有:常量和抽象方法
2、接口类允许被多继承;implements
继承关键字;
3、接口类允许被抽象类继承;
4、接口类继承中多态的应用:接口类->继承类->工作类(面向用户通用类)
5、trait类和抽象类以及接口类一样不能被实现,只能嵌入宿主中实现,trait是一个特殊类但不能用类常量;
6、如果父类和子类以及trait中有一个同名方法,优先级:子类>trait>父类;