PHP类继承、接口继承关系概述

PHP类继承:

  1. PHP类不支持多继承,也就是子类只能继承一个父类,但是支持多层次继承,比如:

     1 class frist{
     2     public function __construct(){
     3         echo "我是第一个类。","<br>";
     4     }
     5     public function printer(){
     6         echo "frist","<br>";
     7     }
     8 }
     9 class seconds extends frist{}
    10 class third extends seconds{}
    11 $obj = new third();
    12 $obj->printer();

    结果:这是第一个类。 frist 第二个类和第三个类没有重写printer()方法,第三个类实例化后可以调用printer()方法。

  2. 继承权限问题 2.1 父类private方法不可被继承,父类私有化 2.2 父类protected方法可以被继承,但不能被实例化对象调用,如果调用会出现" Call to protected method frist::printer()"的报错,父类对此方法置于保护模式下 2.3 父类public方法可以被继承、可以被实例化对象调用,属于公开方法 2.4 子类可重写父类public或者protected的方法,不能重新private的方法,如果同名只是在本类重新声明
  3. 接口类继承 3.1 接口支持多继承,接口类的方法不需要实现比如:
     1 interface frist{
     2     public function ex1();
     3 }
     4 interface seconds{
     5     public function ex2();
     6 }
     7 interface third extends frist,seconds{
     8     public function ex3();
     9 }
    10 class fourth implements third{
    11     public function ex1(){}
    12     public function ex2(){}
    13     public function ex3(){}
    14 }
    15
    16 class fourth implements frist,seconds{
    17     public function ex1(){}
    18     public function ex2(){}
    19 }

    3.2 接口类的方法权限都是public,默认public 3.3 引用接口的类必须实现接口的所有方法,否则会报错,比如:"Class e contains 1 abstract method and must therefore be declared abstract or implement the remaining methods",即:e类包含1个抽象方法,因此必须声明抽象或实现其余方法。

  4. 抽象类:只要一个类里面有一个方法是抽象方法,那么这个类就要定义为抽象类

    4.1 抽象类继承抽象类不能重写父类方法。

      4.2 抽象类继承是对父类的方法的拓展。

      4.3 继承的派生类当中要把所有抽象方法重载才能实例化。

   4.4 抽象类实现的普通发放,可以在非抽象子类中直接调用。

  5. 接口和抽象类的异同点(引用抽象类与接口区别)

   5.1 对接口的使用方式是通过关键字implements来实现的,而对于抽象类的操作是使用类继承的关键字exotends实现的

      5.2 接口没有数据成员,但是抽象类有数据成员,抽象类可以实现数据的封装。

      5.3 接口没有构造函数,抽象类可以有构造函数。

      5.4 接口中的方法都是public类型,而抽象类中的方法可以使用private、protected或public来修饰。

      5.5 一个类可以同时实现多个接口,但是只能实现一个抽象类。

      5.6 相同点:函数体内不能写任何东西,比如:function getName();即可。

原创帖,转载请注明出处~

原文地址:https://www.cnblogs.com/dongw/p/php_extend.html

时间: 2024-11-04 07:32:51

PHP类继承、接口继承关系概述的相关文章

Java类集(接口继承的关系)

类集的概念: 类集(Collection)就是一个动态的对象数组,与一般的对象数组不同,类集中的对象内容可以任意扩充. 类集的特性: 这种框架是高性能的 框架必须允许不同类型的类集以相同的方式和高度互操作方式工作 类集必须是容易扩展和/或修改的 Java类集(接口继承的关系)

C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义(转载)

C#与Java对比学习:类型判断.类与接口继承.代码规范与编码习惯.常量定义 类型判断符号: C#:object a;  if(a is int) { }  用 is 符号判断 Java:object a; if(a instanceof Integer) { } 用 instanceof 符号判断 类与接口的继承: C#:public class MDataRow : List<MDataCell>, IDataRecord, ICustomTypeDescriptor Java:publi

类与接口的关系

1. 接口与接口之间可以相互继承: 2. 类与类之间可以相互继承: 3. 类与接口之间,只能是类来实现接口: 4. 继承已经具有父类的方法,子类可以不重写父类方法:类在实现接口的时候,必须重写接口所有的方法. 5. Demo interface Valuable { public double getMoney(); } interface Protectable { public void beProtectable(); } interface A extends Protectable {

继承类,接口

继承类 继承方法定义格式:public abstract 返回值类型 方法名(参数); 继承类定义格式:public abstract class 类名 {} 抽象方法一定定义在抽象类中,抽象类不能直接创建对象,私有的方法子类是没法继承的. public interface Smoking { //成员变量的特点:public static final 数据类型 变量名=变量值: //静态常量 public static final int a=1; //抽象方法:public abstract

接口继承与实现继承

在了解这个概念前,需要了解这么几个概念.纯虚函数,虚函数,非虚函数 纯虚函数: 被声明为纯虚函数的类一定是作为基类来使用的,含有纯虚函数的类被称为抽象类,抽象类不能实例化对象.因此纯虚函数一般用来声明接口.其派生类必须实现这个函数.纯虚函数在基类中可以有函数实现,也可以没有.声明纯虚函数的原因是,在基类往往不合适进行实例化,比如一个shape类,中的draw方法.必须为纯虚函数,因为他不是任何一种形状. 虚函数:在基类中声明为vitual,并在一个或者多个派生类中被重新定义的函数.虚函数用于提供

(二十二)类与对象 ---- 继承

什么时候用继承? 1.当类之间有显著不同,且较小的类是较大的类的组件时,用组合比较好 比如机器人类是一个大类,躯干类.胳膊类.腿类是小类 2.当类之间有很多相同的属性与功能,提取这些共性作为基类,用继承比较好 比如鸡和鸭,我们可以提取他们的共性(两只翅膀.用两只脚走路)做一个禽类,但是他们也有各自独特的个性(鸡会打鸣,鸭会游泳) class qing(): #共性提取为一个基类(禽类) wing = 2 #父类数据属性 def __init__(self,owner): self.owner =

Java基础——抽象类和接口的关系

在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都能用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就应该被定义为抽象类. 抽象类 概述 比如,我们要描述"动物",它具有年龄.体积,会叫,能跑.但是又缺乏足够的特性(相较于阿猫,阿狗,它们都是动物,却有自己的特性),我们没有唯一的一种能够代表动物的东西(当然,这是相对于猫.狗来说的,在生物学上,动物还是有办法来定义的),这时我们可以用抽象类来描述它.当我们用某个类来具体描述&quo

UML 类与类之间的四大关系的一些图标及代码含义

UML 类与类之间的四大关系的一些图标及代码含义 另一个版本: 关联:连接模型元素及链接实例,用一条实线来表示: 依赖:表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示: 聚合:表示整体与部分的关系,用一条实线加空心菱形来表示: 组成:表示整体与部分的有一关系,用一条实线加实心菱形来表示: 泛化(继承):表示一般与特殊的关系,用一条实线加空心箭头来表示: 实现:表示类与接口的关系,用一条虚线加空心箭头来表示:类与类之间存在以下关系:(1)泛化(Generalization)(2)关

类与接口

类与接口的关系: 实现关系 接口在类中允许多实现:多个接口之间用逗号个开 接口是一个特殊类 一个非抽象类是实现了的接口:必须实现接口中的所有方法 一个抽象类实现接口:可以不实现接口中的方法,但是竭诚与它的类就必须实现接口中的方法. 一个接口可以继承多个接口 接口与接口的关系: 接口与接口存在继承关系,一个接口存在多个继承 多态: 一个类对象具有多种表现形态(父类的引用类型变量指向子类的对象) 多态条件: 1.必须存在继承 2.必须要有方法的重写 注意: 子父类存在同名的成员变量 ,默认访问父类中

Java 类与类的关联、聚合、继承、实现关系

关联关系(最弱的一种关系): 关联关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的.关联可以是单向.双向的.表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量. 例如学生和老师 老师要讲课, 这 是一个方法, 要传个参数进去, 参数是学生对象 继承关系(避免多重继承) 继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在Java中继承关系通过关键字extend