php 静态成员(static)抽象类(abstract)和接口(interface)
首先看一下静态成员(static)和普通成员(public; protect; private)的区别:
静态成员是属于类的,普通成员是属于对象的; 例如:
<?php
header("Content-type:text/html;charset=utf-8"); //以防出现乱码 class fenbi
{
public $length;
public static $color;
static function show()
{
echo "粉笔的颜色:" ,self:: $color; //静态成员的表示方法;静态方法里面无法调用普通成员
}
function xianshi()
{
echo"显示:".self::$color; // 普通方法里面可以调用静态成员
} } $f=new fenbi(); //把类实例化
fenbi::$color="蓝色";
$f->show();
$f->xianshi(); //$color无法实例化
?>
其次是抽象类,抽象类关键词是abstract; 特点是:不能被实例化,只能被继承; 目的:为了派生子类,控制子类
<?php
 header("Content-type:text/html;charset=utf-8");
abstract class dog
{
     function jiao()
{
     echo "汪汪";
}
}
class jinmao extends dog   // 用类jinmao继承dog
{
}
$d=new dog(); //这个地方这么写是错误的,抽象的类是无法实例化的
?>
最后是接口,关键词是interface,是极度抽象的类,接口里面不能包含成员变量,只能包含成员方法,成员方法里面可以没有函数体,
实现接口的类,必须实现接口里面的方法 特点: 命名必须以I开头; 方法是没有具体的内容的; 子类继承的时候用关键词 implement ;
子类必须重写所有的接口类(父类)方法;
<?php
header("conten-type:text/html; charset-utf-8") interface IUSB
{
function write(); //接口里面只能放方法;不可以放变量
function read();
} class mouse implements IUSB
{
function write()
{
echo "点一下鼠标";
}
function read()
{
echo "给鼠标一个指令";
}
}
$m=new mouse(); //接口里面的类是可以实例化的
$m->write(); ?>
补充:下午有讲到__tostring/clone的使用方法 以及引用文件等
<?php class yue
{
function __tostring()
{
return"这是tostring的使用方法";
}
} $y=new yue();
//echo $y; //讲到这里运用tostring可以直接输出$y $x=clone $y;
echo$x //对$y进行了克隆,输出内容和上面一样 ?>
引用文件使用的是include 和 requair 这两种方法,在下一篇随笔会详细介绍着两种方法的区别 以及如何使用
php 静态成员(static)抽象类(abstract)和接口(interface)的更多相关文章
- 抽象类 abstract 和 接口 interface 类的区别
		在看一些框架的优秀改良时,都会设计一层base层,并且 base里面一般都是 abstract 类,然后 就找了为什么做的原因.发现: PHP5支持抽象类和抽象方法.抽象类不能直接被实例化,你必须先继 ... 
- c#中抽象类(abstract)和接口(interface)的相同点与区别
		相同点: 1.都可以被继承 2.都不能被实例化 3.都可以包含方法声明 4.派生类必须实现未实现的方法 区别: 1.抽象基类可以定义字段.属性.方法实现.接口只能定义属性.索引器.事件.和方法声明,不 ... 
- Java:抽象类abstract和接口Interface
		一.抽象类:abstract 抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情.对于一个父类,如果它的某个方法在父类中实现出来 ... 
- C#中抽象类(abstract)和接口(interface)的实现
		抽象类 抽象方法是没有代码实现的方法,使用abstract关键字修饰: 抽象类是包含0到多个抽象方法的类,其不能实例化.含有抽象方法的类必须是抽象类,抽象类中也可以包含非抽象方法: 重写抽象类的方法用 ... 
- 【温故知新】c#抽象类abstract与接口interface
		1.什么是抽象类 先来看MSDN对抽象类描述: 抽象类是一些留有部分或全部成员未实现的类,以便可以由派生类来提供实现. 在面向对象的编程中,抽象类用作层次结构的基类,并表示不同对象类型组的通用功能. ... 
- C++虚函数virtual,纯虚函数pure virtual和Java抽象函数abstract,接口interface与抽象类abstract class的比较
		由于C++和Java都是面向对象的编程语言,它们的多态性就分别靠虚函数和抽象函数来实现. C++的虚函数可以在子类中重写,调用是根据实际的对象来判别的,而不是通过指针类型(普通函数的调用是根据当前指针 ... 
- C# 抽象方法及抽象类 Abstract  及接口
		public abstract class Animal { public abstract void Dosth(); } 该类中只有虚方法 那么我们可以用abstract来修饰 将该类称为抽象 ... 
- python抽象类+抽象方法实现接口(interface)
		#python没有类似于java和C#的接口类(interface),需要使用抽象类 和抽象方法来实现接口功能 #!/usr/bin/env python#_*_ coding:utf-8 _*_ f ... 
- 虚方法virtual、抽象方法abstract、接口interface区别
		接口.抽象类.抽象方法.虚方法: 这四个名词时非常容易混淆的: 首先说一下接口 与抽象类 的异同: 相同点: 1.他们都不能实例化自己,也就是说都是用来被继承的. 2.抽象类中的抽象方法和接口方法一样 ... 
- 抽象 abstract  和 接口 interface。  java  的 堆 和 栈。  参数传递(基本类型和普通对象的区别)
		package com.test; import com.test.Pro; //protected 修饰的成员只能在本包中和 继承该类的方法中使用 public abstract class Tes ... 
随机推荐
- 一个页面多个ng-app注意事项
			1.一个页面会自动加载第一个ng-app 2.如果想启动其它ng-app,需要通过下列代码的红色部分来启动,此时一共启动了2个ng-app 3.特别注意:代码红色部分一定要放在最后,比如,不能放在蓝色 ... 
- SQL Server 触发器 详细讲解
			最近在做微信活动,需要用到存储过程,在网上找了下感觉使用触发器更好些,和大家分享下 希望对你有用. 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动 ... 
- (2).net core2.1 Startup.cs
			app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Ho ... 
- SpringMVC (<context:include-filter>和<context:exclude-filter>的使用)
			eg: 1.现在给定一个项目包的结构: com.yk.controller com.yk.service 2.在SpringMVC.XML有以下的配置: <!--扫描@controller注解- ... 
- 轻量级Web渗透测试工具jSQL
			轻量级Web渗透测试工具jSQL jSQL是Kali集成的一款轻量级的Web渗透测试工具.最初该工具主要实施SQL注入,后来增加更多的功能,扩展形成一个综合性的Web渗透测试工具.Kali提供的版本较 ... 
- jenkins集群节点构建maven(几乎是坑最多的)
			业务量变大时,单台的jenkins进行自动化构建部署,就显得没那么灵活,jenkins的集群并非像web服务器.mysql集群那样,jenkins的集群无需在额外的主机安装jenkins,但是用于ja ... 
- Android 检查输入
			在开发过程中,会经常遇到这样的需求:上面有很多的输入控件,等所有的输入都合法后,按钮才能自动变成enabled的状态,才能继续下一步的操作. 下面是一种用观察者模式实现的一种解决方案. button代 ... 
- sqlalchemy如何实现时间列自动更新?
			目标:数据表的时间列在其他列内容更新的时候,自动更新时间列到更新的时间 方法:数据库表模型如下:server_default表示初始时间,onupdate表示更新的时间 class MonitorDa ... 
- uva 11374 最短路+记录路径 dijkstra最短路模板
			UVA - 11374 Airport Express Time Limit:1000MS Memory Limit:Unknown 64bit IO Format:%lld & %l ... 
- pycharm pull到github
			1.setting中找到github 正确输入邮箱密码,勾上ssh 2.在本机中git bash 得到ssh代码 输入到github 个人setting中 3.在pycharm中setting项git ... 
