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 ...
随机推荐
- 定情信物(bzoj 3823)
Description 都说程序员找不到妹子,可是无人知晓,三生石上竟然还刻着属于小 E 的一笔. 那一天,小 E 穷尽毕生的积蓄,赠与了妹子一个非同寻常的定情信物.那是一个小 小的正方体,但透过它, ...
- SharePoint 2013 中的 URL 和标记
SharePoint 2013 中的 URL 的类型 SharePoint 2013 分析 URL 字符串以基于指定的协议(例如,http:)确定 URL 的格式或确定正 ...
- Codevs 1501 二叉树的最大宽度和高度
1501 二叉树最大宽度和高度 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 给出一个二叉树,输出它的最大宽度和高度. 输入描 ...
- canvas之webgl的浏览器开启方式
引自百度知道的回答 1.开启方式: 第一种:打开cmd,切换到Chorme的安装目录,敲入chrome.exe --enable -webgl,回车就会打开一个chrome浏览器窗口: 第二种:找到C ...
- 前端居中模板(常用HTML模板)
0.效果:
- [leetcode]84.Largest Rectangle in Histogram ,O(n)解法剖析
Given n non-negative integers representing the histogram's bar height where the width of each bar is ...
- jQuery移动端手机键盘输入车牌号代码【附加新能源车牌】
最近在移动应用中要做到一个录取汽车牌号码的功能,在网上找了一个插件后发现没有增加新能源车牌功能, 和同事研究了一下,将其进行改造完美的实现了这个功能,这里放出该插件的源码: 原插件来自A5源码网[ht ...
- openssl转换各种证书的语法收集
参考网址:https://www.sslshopper.com/ssl-converter.html 个人总结:先找准要生成什么证书先,尤其是正规购买的流程与openssl生成的不一样,所以先确定是什 ...
- .net 哈希
using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptograph ...
- win10安装 pandas
pip install -i https://pypi.douban.com/simple pandas