一、什么是抽象方法?

  一个方法如果没有方法体(不使用"{}",直接使用分号结束的方法,才是没有方法体的方法),则这个方法就是抽象方法

1、声明一个方法,不使用{},而直接分号结束

2、如果是抽象方法,必须使用abstract(抽象关键字来修饰)

二、什么是抽象类

1、如果一个类中有一个方法是抽象的方法,则这个类就是抽象类

2、如果声明一个抽象类,则这个类必须使用abstract关键字修饰

<?php
//声明一个抽象类,要使用abstract关键字识别
abstract class Person{
protected $name;
protected $country; //在抽象类中声明一个没有方法体的抽象方法
abstract function say(); //在抽象类中可以声明正常的费抽象的方法
function run(){
echo '我正在走路'; //有方法体,输出一条语句
}
}
?>

注意:

  1、只要使用abstract修饰的类,就是抽象类

  2、抽象类是一种特殊的类,在抽象类中可以有抽象方法

  3、除了抽象类可以有抽象方法,意外,和正常的类完全一样

  4、抽象类不能实例化对象

三、抽象方法的作用

  1、抽象方法的作用就是规定了,子类必须有这个方法的实现,功能交给二子类

  2、只写出来结构而没有实现,实现交给具体的子类去实现

<?php
//声明一个抽象类,要使用abstract关键字识别
abstract class Person{
public $name;
public $country; function __construct($name='',$country='China'){
$this ->name = $name;
$this ->country = $country;
} //在抽象类中声明一个没有方法体的抽象方法
abstract function say(); //在抽象类中可以声明正常的费抽象的方法
abstract function run();
}
class student extends Person{
function say() {
echo '我是中国人';
}
function run() {
echo '我正在跑步';
}
}
?>

注意:

1、抽象类不能实例化对象(不能创建对象)

2、如果块钱按键抽象类,就必须写这个类的子类,将抽象类中的抽象方法覆盖(加上方法体)

3、子类不许全部实现(覆盖重写)抽象方法,这个子类才能创建对象,如果只实现部分,那么还有抽象方法,则类必须是抽象类

四、抽象类的作用

就是要求子类的结构,所以抽象类就是一个规范

【代码总结】PHP面向对象之抽象类的更多相关文章

  1. 面向对象 继承 抽象类 接口 static 权限修饰符

    Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...

  2. 06 面向对象:多态&抽象类&接口&权限修饰符&内部类

    多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父 ...

  3. Java之旅_面向对象_抽象类

    参考并摘自:http://www.runoob.com/java/java-abstraction.html Java抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有 ...

  4. Java 基础 面向对象和抽象类

    面向对象变量 局部变量和成员变量区别 区别一:定义的位置不同 定义在类中的变量是成员变量 定义在方法中或者{}语句里面的变量是局部变量 区别二:在内存中的位置不同 成员变量存储在对内存的对象中 局部变 ...

  5. kotlin面向对象之抽象类、继承、多态

    继承: 比较简单,直接看如何使用,这里以父亲与儿子的关系为例: 接着定义儿子并且继承父亲,如下: 是用":"号来继承的,但是此时报错了,看下错误提示: 在kotlin的类并非是人人 ...

  6. Java入门 - 面向对象 - 04.抽象类

    原文地址:http://www.work100.net/training/java-abstract.html 更多教程:光束云 - 免费课程 抽象类 序号 文内章节 视频 1 概述 2 Java抽象 ...

  7. Java 面向对象编程 抽象类 抽象方法 abstract

    抽象类 通过abstract定义的方法是抽象方法,它只有定义,没有实现.抽象方法定义了子类必须实现的接口规范: 定义了抽象方法的class必须被定义为抽象类,从抽象类继承的子类必须实现抽象方法: 如果 ...

  8. java面向对象(下)-抽象类

    抽象类和抽象方法 抽象类和抽象方法必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法 抽象类和抽象方法的规则如下 1.抽象类和抽象方法必须要用abstra ...

  9. 面向对象 ---Java抽象类

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不能实例化对象之外, ...

随机推荐

  1. python 批量编译 批量删除

    把项目的py文件变异成pyc文件,好处是可以保护源码不泄露. 假如一个工程文件夹有1000个py文件,这个时候怎样快速处理 ? 两步走: ①  py--->pyc python -m compi ...

  2. selenium的错误截图

    在自动化测试过程中,测试执行期间需要收集获取截图信息,一方面为了错误调试代码,一方面也为了和开发沟通, 获取当前的截图 save_screenshot是获取当前截图的方法,以百度首页为例,打开百度首页 ...

  3. 2018-2019-20175334实验三《敏捷开发与XP实践》实验报告

    2018-2019-20175334实验三<敏捷开发与XP实践>实验报告 一.实验内容及步骤 实验三 敏捷开发与XP实践-1 实验三 敏捷开发与XP实践 http://www.cnblog ...

  4. springboot10(docker)

    一 Docker 1 what's the Docker? ​ Docker是一个开源的应用容器引擎,轻量级容器技术. ​ Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器 ...

  5. IntelliJ IDEA 2017.3尚硅谷-----界面展示

  6. 计算几何-Andrew法-凸包

    This article is made by Jason-Cow.Welcome to reprint.But please post the article's address. 利用一下叉积和栈 ...

  7. 安装CDH第三方依赖包

    安装CDH第三方依赖包: yum install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyr ...

  8. 剑指OFFER之合并两个排序的链表

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解决办法 1.递归方法: if(pHead1==NULL) return pHead2; els ...

  9. PHP array_chunk() 妙用

    定义和用法 array_chunk()函数把一个数组分割为新的数组块. array_chunk(array,size,preserve_keys); 参数 描述 array 必需.规定要使用的数组. ...

  10. Intersection over Union(IoU) algorithms

    IoU算法可用与评估两个多维度数据的相似度,举一个实际应用,做CV,目标检测,我们需要评估模型的识别准确率,不同于二元类问题,普通的评估算法不合适,于是用到了这个算法,这个算法简单易懂,评估效果也不错 ...