码迷,mamicode.com
首页 > 其他好文 > 详细

静态、抽象类、接口

时间:2017-04-04 18:41:05      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:声明   dog   冒号   继承   变量   ring   interface   syntax   shu   

1.静态

普通成员:是属于对象的
静态成员:a.是属于类的;  

b.定义时加上关键字 static ;  

c.关键字 self:在类中代表该类;  

d.调用静态成员符号双冒号::


普通方法是可以调用静态成员的; 静态方法不能调用普通成员

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Ren
{
    public $name;
    public static $zhongzu;    //将普通成员变量变为静态成员变量,加上关键字 static
     
    //普通方法
    function Say()
    {
        echo Ren::$zhongzu."你好";   
        //echo self::$zhongzu."你好";  //关键字 self:在类中代表该类: 类名修改,可以用这个关键字 
    }  
}
 
Ren::$zhongzu="战斗民族";   //调用静态成员使用双冒号::
 
$r new Ren();
$r->Say();   //普通方法可以调用静态方法

输出结果就是:战斗民族你好

 

2.抽象类

抽象类a.它不能被实例化, b.它作为父类使用,   c.关键字 abstract

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
abstract class Dongwu   //使用关键字 abstract 可以成为抽象类
{
  public $name;
  public $age;
     
  function Run()
  {
    echo "跑";
  }
}
 
class Dog extends Dongwu   //继承父类
{      
}
 
$d new Dog();
$d->Run();

实例化子类继承父类就可以输出正确

注意:强行实例化抽象类,会出现错误

抽象类的扩展功能很强,可以不动源代码的基础上扩展出其他的类

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
abstract class YunSuan   //抽象类的关键字  abstract
{
  public $a;
  public $b;
     
  function Suan()
  {
             
  }
}
 
//Jia继承YunSuan并且修改Suan方法
class Jia extends YunSuan
{
  function Suan()
  {
    return $this->a+$this->b;
  }
}
 
//Cheng继承YunSuan并且修改Suan方法
class Cheng extends YunSuan
{
  function Suan()
  {   
  return $this->a*$this->b;
  }
}
 
$J new Jia();
$J->a=2;
$J->b=10;
echo $J->Suan();
  

 

3.接口

接口:a.极度抽象的类

b.定义方式 :interface

c.接口中的方法是控制子类必须实现某些功能(接口中出现的方法,子类必须实现)

d.实现接口 关键字:implements

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
interface IUSB    //I开头,I就是定义方式的开头
{
  function Read();    //成员方法:没有函数体,只声明函数名  
  function Write();
}
 
class ShuBiao implements IUSB    //实现接口 关键字:implements
{
  function Read()
  {
    echo "鼠标插上";   
  }
     
  function Write()
  {
    echo "chuanshu";   
  }
}
 
$snew ShuBiao();
$s->Read();

输出结果就是:鼠标插上

注意:如果子类中没有把父类的方法全部实现,那么输出时会报错;如果子类把父类的方法全部实现了,那么就会输出正确的调用方法答案

静态、抽象类、接口

标签:声明   dog   冒号   继承   变量   ring   interface   syntax   shu   

原文地址:http://www.cnblogs.com/zhangkeyu/p/6665670.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!