PHP 抽象类
* 抽象类
* 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 抽象类的更多相关文章
- PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程
PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...
- 从接口、抽象类到工厂模式再到JVM来总结一些问题
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 J ...
- 抽象类 VS 接口
引言 接口和抽象类是面向对象编程(OOP, Object Oriented programming)中两个绕不开的概念,二者相似而又有所不同.接下来,我们来了解二者的概念并比较它们的异同. 什么是抽象 ...
- java抽象类和接口
面向对象设计过程中重要的一点是如何进行抽象,即把"问题空间"中的元素与"方案空间"中的元素建立理想的一对一的映射关系.抽象类和接口便是抽象过程中的产物. ...
- Java之继承、抽象类、接口篇
一.继承(extends) 什么是继承? 继承是对现实生活中的"分类"概念的一种模拟. 狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是"继承" ...
- php中抽象类与接口的概念以及区别
php里面的接口类,抽象类到底有什么用呢? 刚接触php的时候,觉得这个东西没什么用,其实这些东西还是有一定的作用的,下面我就简单的说说. 1.php 接口类:interface 其实他们的作用很简单 ...
- java基础1.-------抽象类,抽象方法
抽象类:抽象类不能实例化,类中的方法必须经过子类的重写实现 类里的方法是public修饰时,子类可重写也可不重写 类的方法是abstract修饰时,方法是抽象方法,子类必须重写该方法 类的方法用fin ...
- java 中抽象类和接口的五点区别?
1.一个类可以实现多个接口 ,但却只能继承最多一个抽象类. 2.抽象类可以包含具体的方法 , 接口的所有方法都是抽象的. 3.抽象类可以声明和使用字段 ,接口则不能,但接口可以创建静态的final常量 ...
- (转)深入理解Java的接口和抽象类
原文地址: http://www.cnblogs.com/dolphin0520/p/3811437.html 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP ...
- Java中接口和抽象类的区别
经常看到这样的问题,就是问这两个的区别,我这也总结一下: 1,宏观上说,一个是类,一个是接口,类只支持单一继承,接口支持多个继承 2,微观上说,就是从内部来说 a,成员变量方面 接口可以包含方法,属性 ...
随机推荐
- Java需要强制捕获的异常
Java编译器要求我们强制捕获Excetion,但不包括RuntimeException 不强制要求捕获Error和RuntimeException是因为,这两种异常我们程序一般无能为力,而其他Exc ...
- yolo3的改变
转自:https://zhuanlan.zhihu.com/p/35394369 YOLOv3的前世今生 2013年,R-CNN横空出世,目标检测DL世代大幕拉开. 各路豪杰快速迭代,陆续有了SPP, ...
- ELK 集群升级操作
1.配置项变更 2.禁用自动分片 disabled shard allocation curl -XPUT 'localhost:9200/_cluster/settings?pretty' -H ...
- 对于nginx配置文件中的fastcgi_param的配置错误
在centos中搭建LNMP的时候,遇到了一个问题 在浏览器中访问.php文件的时候,nginx不能正常解析,页面返回404,后来百度了一下,发现了问题 在nginx的配置文件nginx.conf中的 ...
- 面向对象【day07】:类的特性介绍(四)
本节内容 1.概述 2.访问属性 3.私有属性 4.总结 一.概述 在上篇博客中我们已经讲了一些关于类的知识,我们来回顾以下: 定义类(class dog(object))-> 实例化(d = ...
- 常用的css文件
reset.css(几乎每个项目都要引入的css) @charset "utf-8";html{background-color:#fff;color:#000;font-size ...
- SqlServer中的临时表
一.什么是临时表 临时表属于会话级的,会话结束的时候,临时表被释放,其创建.使用.删除都和普通表一样,临时表空间一般利用虚拟内存,不必进行磁盘I/O,因此效率较高..临时表有两种:普通临时表 (#Tb ...
- python执行centos命令
import os improt sys import re import commands a = commands.getoutput("ls -al /") print a
- JAVA泛型中的类型擦除及为什么不支持泛型数组
一,数组的协变性(covariant array type)及集合的非协变性 设有Circle类和Square类继承自Shape类. 关于数组的协变性,看代码: public static doubl ...
- Java——Struts2 crud 简单实例(学习struts2和ssh) 用Myeclipse实现
1.new web project 2.给新建的web项目添加struts2支持 3.项目结构中有了struts.xml和struts2核心库 4.编码 4.1项目结构图 4.2源代码: (1)DbU ...