* 抽象类
* 1.使用关键字: abstract * 2.类中只要有一个方法声明为abstract抽象方法,那么这个类就必须声明为抽象类 * 3.抽象方法只允许有方法声明与参数列表,不允许有方法体; * 4.因为抽象方法的不确定性,所以抽象类禁止实例化,仅允许通过继承来实例化; * 5.继承抽象类的子类中,必须将抽象类中的所有抽象方法全部实现 * 6.子类成员的访问限制级别必须等于或小于抽象类的约定,例如抽象类是protected,子类必须是 * protected 或者 public 不允许是private * 7.子类方法参数必须与抽象类方法参数完全一致,但允许增加默认参数 * 特别注意 * 1. 尽管抽象类不能实例化,但仍然可以为它创建构造器,但必须声明为final * 2. 抽象类理论上说不应该拥有静态成员,部分编辑器会有E_STRICT2048提示,但仍然可以这样做
abstract class Fruits
{
//水果名称
protected $name; //声明静态属性,因为要用到静态类中
// protected static $name; //抽象方法
abstract public function eat(); //静态抽象方法
// abstract static public function eat(); //尽管不能直接实例化抽象类,但仍然可以有构造方法
public function __construct()
{
return '抽象类构造器,实例化时自动调用<br>';
} }
//实际开发中应该为每一个类创建独立的类文件
class Apple extends Fruits
{
protected $name = '苹果'; //声明为静态属性
// public static $name = '苹果'; public function eat()
{
return $this->name.'可以直接生吃';
} //子类构造方法
public function __construct()
{
echo parent::__construct();
} //实现抽象类中的抽象静态方法eat()
// public static function eat()
// {
// return self::$name.'可以直接生吃';
// }
} $apple = new Apple;
echo $apple->eat();
//此前是抽象静态类,不需要例化,可以用类直接访问
//echo Apple::eat();

PHP 抽象类的更多相关文章

  1. PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程

    PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...

  2. 从接口、抽象类到工厂模式再到JVM来总结一些问题

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 J ...

  3. 抽象类 VS 接口

    引言 接口和抽象类是面向对象编程(OOP, Object Oriented programming)中两个绕不开的概念,二者相似而又有所不同.接下来,我们来了解二者的概念并比较它们的异同. 什么是抽象 ...

  4. java抽象类和接口

    面向对象设计过程中重要的一点是如何进行抽象,即把"问题空间"中的元素与"方案空间"中的元素建立理想的一对一的映射关系.抽象类和接口便是抽象过程中的产物.     ...

  5. Java之继承、抽象类、接口篇

    一.继承(extends) 什么是继承? 继承是对现实生活中的"分类"概念的一种模拟. 狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是"继承" ...

  6. php中抽象类与接口的概念以及区别

    php里面的接口类,抽象类到底有什么用呢? 刚接触php的时候,觉得这个东西没什么用,其实这些东西还是有一定的作用的,下面我就简单的说说. 1.php 接口类:interface 其实他们的作用很简单 ...

  7. java基础1.-------抽象类,抽象方法

    抽象类:抽象类不能实例化,类中的方法必须经过子类的重写实现 类里的方法是public修饰时,子类可重写也可不重写 类的方法是abstract修饰时,方法是抽象方法,子类必须重写该方法 类的方法用fin ...

  8. java 中抽象类和接口的五点区别?

    1.一个类可以实现多个接口 ,但却只能继承最多一个抽象类. 2.抽象类可以包含具体的方法 , 接口的所有方法都是抽象的. 3.抽象类可以声明和使用字段 ,接口则不能,但接口可以创建静态的final常量 ...

  9. (转)深入理解Java的接口和抽象类

    原文地址: http://www.cnblogs.com/dolphin0520/p/3811437.html 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP ...

  10. Java中接口和抽象类的区别

    经常看到这样的问题,就是问这两个的区别,我这也总结一下: 1,宏观上说,一个是类,一个是接口,类只支持单一继承,接口支持多个继承 2,微观上说,就是从内部来说 a,成员变量方面 接口可以包含方法,属性 ...

随机推荐

  1. selenium_基本用法

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  2. Scala进阶之路-正则表达式案例

    Scala进阶之路-正则表达式案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 废话不多说,正则大家都很清楚,那在Scala如何使用正则了?我们直接上个案例,如下: /* @au ...

  3. NGUI的UIRoot会移动

    我在做一个游戏的时候,发现NGUI的UIRoot会自己移动位置,最初创建UIRoot的时候是可以随便拖动的,只要它自己移动了位置,你就拖不动它了,而且UIRoot下面的摄像机也会变成类似主摄像机之类的 ...

  4. Swift学习笔记9--错误控制

    1.Swift 中有4种处理错误的方式.你可以把函数抛出的错误传递给调用此函数的代码.用do-catch语句处理错误.将错误作为可选类型处理.或者断言此错误根本不会发生. 2.wift 中的错误处理并 ...

  5. js 数组与字符串的相互转化

    数组转字符串:join() 字符串转数组:split('')

  6. UVALive - 3266 Tian Ji -- The Horse Racing(贪心)

    题目链接 题意 两人赛马,每居获胜得200,平局无事发生,输了也输200.求最优的策略使赢的钱最多. 分析 排序,从最快的开始比,若比不过,则用最弱的消耗最强的.模拟即可. #include<i ...

  7. 检验两个随机序列的beta系数

    检验两个随机序列的beta系数 代码 def test_beta(loops=10): ''' 检验两个随机序列的beta系数 :loops: int, 循环次数, 每次循环会产生两个随机序列, 然后 ...

  8. Linux之包管理工具总结[RPM/DPKG]-[YUM/APT]

    0.关键词解释 RPM:Red Hat Package Manager(原名),RPM Package Manager(现名,递归缩写,类似于GNU的命名); 解释:RPM软件包管理器 YUM:Yel ...

  9. XML之Well-Formed文档规则

    由于课程原因,近日粗略学习XML,载以博客是为担心忘记,以供日后复习之用. XML标准中明确规定了XML文件应当遵守的规则,大致上分成基本规则和DTD(Document Type Definition ...

  10. Flask最强攻略 - 跟DragonFire学Flask - 第十篇 before_request after_request

    Flask我们已经学习很多基础知识了,现在有一个问题 我们现在有一个 Flask 程序其中有3个路由和视图函数,如下: from flask import Flask app = Flask(__na ...