边记边学PHP-(十一)面向对象编程1

来源:互联网 发布:如何提高淘宝销量 编辑:程序博客网 时间:2024/06/07 04:04

   我在书上看到这么一句话:面向对象编程不是一门技术,而是一种编程思想,它与某种特定的技术不存在联系,一门高级的现代化语言最重要得一个因素就是看它是不是支持面向对象。由此看出面向对象的重要性,在写这些的时候我也是再重新学习一次,我觉得一定会有以前没有注意到的东西。仿宋字体代表是引用的某本书上的原话。

    1、面向对象的几个重要概念

   (1)、类
    类无疑是面向对象的最重要的概念了。所有的面向对象第一步就是必须要基于一个类。类本身不是一个具体存在,不能实现具体的功能,但是通过类里面的方法却能完成很多具体功能。
   (2)、对象
    所谓对象,不是那个对象,是编程里面的对象。就是在声明类之后对类的一种实例化。比如我们个体是人类的一个实例。类里面的方法是通过对象去调用的,具有执行功能。
   (3)、方法
    在类里面声明的函数,一般叫做方法,通过对象去调用方法来完成一些具体的功能。
   (4)、成员变量
    以前没有面向对象的时候也声明过变量,所谓成员变量就是在类里面声明的变量。声明的方式与在外面相同,唯一不同的就是多了一个权限。
   (5)、继承
    说到继承,通过字面意思也大概能理解。我们都知道继承财产,子继承父。同样在面向对象中,继承是对类而言的,一个类可以继承另一个类。继承的类称为子类,被继承的类称为父类。子类可以继承父类的方法,也就是说可以调用在父类中声明的方法。我看的这本书上是这么描述继承的:继承是面向对象编程中最重要的一种思想,面向对象编程思想核心就是继承。由此可见继承的重要性。

    2、PHP面向对象基础

    2.1 class 关键字
    class中文意思就有‘类’的意思。同样在PHP中声明类就是class来声明的。看下面一段代码:
<?phpclass technology{    function PHP(){         return "PHP";    }    function Java(){         return "Java";    }}$myClass = new technology();echo "这是".$myClass->PHP()."里面的类";?>

    上面代码运行结果:这是PHP里面的类
    通过代码也就很清楚了,首先,我用class关键字声明了一个类,类名为technology。类名后面跟一对大括号{}。在大括号里面便是类的主体部分。当然这个类比较简单,只是包含了两种方法,并且方法只是返回一个值(字符串)。class关键字的作用就是告诉程序我这是个类!
    在进行类的声明的时候,我总结了几点:
    ①类名最好以小写字母开头,采用驼峰法命名。 
    ②类名后面是没有括号的,这点要注意, 我刚开始写的时候就会顺手写上扩号。
    ③第二个大括号后面是没有分号的。
    ④PHP对类名,方法名是不区分大小写的,但是对变量是严格区分的。但是还是要书写规范。
    2.2 类中的成员
   (1)、构造函数
    书上这么一句话:构造函数是一个比较特殊的函数,它用于类对象初始化时的默认传参。其实在一个完整的类中还是有很多变量的,有的变量需要在对象一声明就要有值,有的则不需要。那么既然有需要的就要有方法来解决问题。那么就是构造函数。这个函数不用去显示的调用,就是说一声明对象就默认调用了。那么如果函数有参数怎么办呢?当然没有问题,如果没有参数怎么传参,怎么赋值呢。就是在new一个对象的后面加括号,括号里面就是参数啊,那些参数就是传给构造函数的。当然构造函数是可以不声明的,也就是说里面所有的变量我都是以后再去赋值使用。那么声明对象时类名后面就可以不加括号了。但是最好还是加上。
    举一个简单的例子:
<?phpclass fruit{private $name;function __construct($name){      $this->name = $name;}function getName(){      return $this->name;}}$myFruit = new fruit("apple");echo "我爱吃".$myFruit->getName();

    这里我声明了一个水果类,里面有一个成员变量,$name。表示它的名字。在这个变量前面有一个private。这个也就是我前面说的那个权限了。一看这个单词也大概明白是什么意思了。其实有三种权限:
private表示私有变量,只有本类中的方法才能够使用。继承的类也不能使用。类外部的想使用时必须通过类里面的方法。这种变量比较安全。public表示共有变量。类里面的和外面的都可以直接调用。方法是默认为public的。当然可以声明成其他两种。protected表示受保护的。类里面的可以使用,继承的类也就是他的子类也可使用,类外面的不能使用。    这里可以看到,构造函数的声明是:function __construct(){}那是两条下划线哦。在实例对象的时候就调用了这个构造函数,我没有显示的去使用它。当然可以吧$name声明成public型,不用构造函数,实例化对象后在外面给它赋值。
    今天先写到这吧,如果有不准确的请留言我。下一篇继续面向对象。
0 0
原创粉丝点击