`

PHP中的 extends与implements 区别

 
阅读更多

1、extends 是继承某个类 
继承之后可以使用父类的方法 
也可以重写父类的方法;

2、implements 是实现多个接口 
接口的方法一般为空的 
必须重写才能使用;

 

[在interface之间也可以声明为extends(多继承)的关系。注意一个interface可以extends多个其他interface。]

 

extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了 
比如 
class A extends B implements C,D,E

extends 继承类implements 实现接口

类和接口是不同的。类里是有方法的实现;而接口无方法的实现,只可以预定义方法(方法头) extends 继承类

----------------------------------------------------------------------------------------------
implements 实现接口
interface的引入是为了部分地提供多继承的功能。

类通过使用implements来实现接口。这里要注意的是一个类可以使用 implements实现多个接口,但是类实现接口必须要实现其中的抽象方法。
在interface中只需声明方法头,而将方法体留给实现接口的类来做。
这些实现的class的实例完全可以当作interface的实例来对待。

-----------------------------------------------------------------------------------------------

Java也提供继承机制﹐但还另外提供一个叫interface的概念。由于Java的继承机制只能提供单一继承(就是只能继承一种父类别)﹐所以就以 Java的interface来代替C++的多重继承。interface就是一种介面﹐规定欲沟通的两物件﹐其通讯该有的规范有哪些。如以Java程式语言的角度来看﹐Java的interface则表示:一些函数或资料成员﹐为另一些属于不同类别的物件所需共同拥有﹐则将这些函数与资料成员﹐定义在一个interface中﹐然后让所有不同类别的Java物件可以共同操作使用之。

   所以﹐对于Java的继承与interface﹐我们总结如下:

1.Java的class只能继承一个父类别(用extends关键字)﹐但可以拥有(或称实作)许多interface(用implements关键字)。 
Q5.1 extends和implements有什么不同?
答:对于class而言,extends用于(单)继承一个类(class),而implements用于实现
一个接口(interf
ace)。

分享到:
评论

相关推荐

    php5 类与对象

    PHP 类的接口 interface 与 implements 关键字 7. PHP 类的访问控制与封装 public,protected,private 修饰符 8. PHP 自动加载类 __autoload() 方法 9. 范围解析操作符(::) 10. PHP 类的静态成员属性与静态...

    PHP中抽象类、接口的区别与选择分析

    本文实例分析了PHP中抽象类、接口的区别与选择。分享给大家供大家参考,具体如下: 区别: 1、对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。 2、...

    PHP100视频教程 23:PHP面向对象开发的学习(七)

    类的接口1、接口的介绍与创建 接口:一种成员属性全部为抽象的特殊抽象类,...接口引用区别与之前我们的学的类继承关键字 extends,继承只能是单一性,而 接口可以使用关键字:implements 多个引用并用逗号 , 分开。

    CommAPI.CHM

    interface javax comm CommPortOwnershipListener extends java util EventListener class java util EventObject implements java io Serializable class javax comm ParallelPortEvent class javax comm ...

    yii2-shopping-cart:yii2的购物车扩展

    Yii 2的购物车此扩展添加了...如何使用在您的模型中: class Product extends ActiveRecord implements CartPositionInterface{ use CartPositionTrait ; public function getPrice () { return $ this -> price ; }

    sic-bundle:单实例控制台命令包

    骰宝 ... class MyCommand extends Command implements SingleInstanceInterface { ... /** * get`s lock name for command execution, based on input * @param InputInterface $input * @

    在多台远程机器上并行运行的命令行的PHP库.zip

    class SCP extends BaseObject implements SCPInterface {  protected $session;  public function __construct(SessionInterface $session, OutputInterface $output)  {  // Set the base...

    PHP面向对象程序设计之接口的继承定义与用法详解

    本文实例讲述了PHP面向对象程序设计之接口的继承定义与用法。分享给大家供大家参考,具体如下: 在PHP5中,接口是可以继承自另外一个接口的。这样代码的重用更有效了。要注意只有接口和接口之间使用 继承关键字 ...

    yii2-queue:Yii2队列扩展。 支持DB,Redis,RabbitMQ,Beanstalk和Gearman

    Yii2队列扩展通过队列异步运行任务的扩展。 它支持基于DB , Redis , RabbitMQ , AMQP... 例如,如果您需要下载并保存文件,则该类可能如下所示: class DownloadJob extends BaseObject implements \yii\queue\ JobI

    PHP接口类(interface)的定义、特点和应用示例

    上下级接口可以通过“extends”关键词继承; 接口所有方法都是“public”权限(爱E族); 接口可以定义常量成员,但不能定义变量成员; 类通过“implements”关键词来实现接口,类必须完全实现接口定义的所有...

    php操作redis缓存方法分享

    class RCache extends Object implements CacheFace { private $redis = null; //redis对象 private $sId = 1; //servier服务ID private $con = null;//链接资源 /** * 初始化Redis * * @return Object */ ...

    shopping-cart:Laravel易于使用的购物车

    class Product extends Model implements Buyable { use BuyableTrait ; } 确保使用相应的产品描述和产品价格实现getBuyableDescription和getBuyablePrice方法。 现在您可以将产品添加到购物车。 use Treest

    php操作memcache缓存方法分享

    使用memcache的前提是需要在服务端先配置好memcahche的...class MCache extends Object implements CacheFace { private $mem = null; //Mem对象 private $sId = 1; //servier服务ID /** * 初始化Memcache * * @

    PHP Reflection API详解

    PHP Reflection API是PHP5才有的新...class ReflectionException extends Exception { } class ReflectionFunction implements Reflector { } class ReflectionParameter implements Reflector { } class ReflectionMet

    laravel-model-cleanup:清理不需要的记录

    class YourModel extends Model implements GetsCleanedUp { ... public function cleanUp ( CleanupConfig $ config ): void { $ config -> olderThanDays ( 5 ); } } 在配置文件中注册模型后,运行clean:...

    解决laravel5中auth用户登录其他页面获取不到登录信息的问题

    首先创建user表,里面有:id, name, password,remember_token等字段。 然后再Models添加表模型User.php <?php namespace App\Models;...class User extends Model implements AuthenticatableContract { protected

    friendly-exception:一个友好的异常接口

    Yii友好异常 提供友好名称和可能解决方案的异常接口。 错误处理程序可能会考虑在错误屏幕上直接显示其他信息的接口。...class RequestTimeoutException extends \ RuntimeException implements FriendlyExceptionInterf

    laravel-comments:Laravel模型的注释

    Laravel评论该存储库的目的是为任何Laravel模型提供添加注释。安装要求包与composer require asseco-voice/laravel-comments 。...class Product extends Model implements Commentable{ use Commentable ; // ... }

    android的服务

    10. public class MyServiceBinder extends Binder implements IMyService { 11. public int getStatusCode() { 12. return statusCode; 13. } 14. } 15. 16. … 17. } 复制代码 下列代码是说明...

    symfony_dic_optimizer:Symfony依赖注入优化器

    Symfony依赖注入容器优化器 ...class appDevDebugProjectContainer extends Container implements ContainerOptimizerInterface { } 该接口将用C实现的方法替换get(),has()和camelize()方法,以期提高性

Global site tag (gtag.js) - Google Analytics