一、什么是抽象方法?

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

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. Linux - 文件时间戳

    概述 简介 linux 文件时间戳 背景 最近感觉很消极的样子 心情不好加不知道写啥 随便水一水 能水的就那么多, 水一次, 少一次 环境 os centos7 1. 时间戳 概述 简述 时间戳 li ...

  2. Books Exchange (hard version)

    The only difference between easy and hard versions is constraints. There are nn kids, each of them i ...

  3. Django_类视图

    1. View 2. tamplate view 3. ListView

  4. Java实现JSONObject对象与Json字符串互相转换

    Java实现JSONObject对象与Json字符串互相转换 JSONObject 转 JSON 字符串 Java代码: JSONObject jsonObject = new JSONObject( ...

  5. 网络、芯片、专利、产业链……影响5G手机走势的因素有哪些?

    近段时间,备受关注的5G手机迎来一个爆发的小高潮.中国质量认证中心官网显示8款5G手机获得3C认证.其中华为有4款 ,一加.中兴.OPPO和vivo各有一款5G手机获得3C认证.随后在7月23日,中兴 ...

  6. 【转载】Mapreduce实现自定义的InputFormat

    转自:http://www.cnblogs.com/dlutxm/archive/2011/09/30/2196653.html 在mapreduce程序运行的开始阶段,hadoop需要将待处理的输入 ...

  7. linux centos7分区

    哈喽! 我今天来分享一下Linux的分区,本次我使用的是LinuxCentos7版本为例,使用虚拟机,命令是fdisk Linux分区有4个主分区及扩展分区,逻辑分区. 首先给虚拟机添加8G硬盘(硬盘 ...

  8. 利用ansible-playbook一键部署ELK(ElasticSearch,logstash and kibana)

    一.部署前环境介绍: es集群5台(es01,es02,es03,es04,es05),logstash服务器1台(logstash2),kibana服务器1台(kibana2),模拟apache服务 ...

  9. 8.10-Day2T1最小值

    题目大意 裴蜀定理   题解 很简单... 我这个蒟蒻都猜的出来... 就求所有数的最大公约数 但注意 要加绝对值 因为gcd里面不能传负数   #include<cstdio> #inc ...

  10. EnumSet

    这个概念是在 Effective Java中了解到的, 可以通过EnumSet来代替位域这种方式表达.并不是很常见的概念, 因此记录下.如果在这之前恰好了解过 bitmap这种数据结构就更好了.不了解 ...