类跟对象的关系
 类是对象的抽象(对象的描述(属性),对象的行为(方法))
  对象是类的实体
  面相对象的三大特征:封装、集成、多态
  自定义类
 Class Person{
  }
  属性定义
 属性是类里面的成员,所以要定义属性的前提条件是需要声明一个类
  Class Person{
 public $name;// 属性
 public $age;
 public $sex;
 }
  方法定义
 方法是定义特定功能的代码块,在类中定义方法表示,创建对象之后,对象的特定行为;
  Class Person{
  public function eat($food){
 echo "Person can eat ".$food;
 }
 }
  实例化对象
 Class Person{
  public $name;// 属性
 public $age;
 public $sex;
  public function eat($food){
 echo "Person can eat ".$food;
 }
  }
  $person1=new Person();
  属性的赋值
 $person1->name="curtis";
 echo $person1->name;
  类方法的调用
 $person1->eat("Apple");
  继承(PHP是单继承,也就是一个子类只能有一个父类)
 为什么要继承?
 回复:为了属性、方法的重复利用;
  业务场景:
 有个Person类,有一个Student类;
 Person里面有姓名、年龄、性别
 如果Student里面再将上面的属性定义一次,那就糟蹋了继承这个神器;
  Person类叫Student类的父类,Student类是Person类的之类;
  Class Person{
  public $name;// 属性
 public $age;
 public $sex;
  public function eat($food){
 echo "can eat ".$food;
 }
  }
  Class Student extends Person{
  public $student_id;
  public function write(){
 echo "I can write";
 }
  public function read(){
 echo "I can read";
 }
 }
  $student1=new Student();
  $student1->name="curtis1";
 echo $student1->name;
 echo "<br />";
  $student1->eat("面");
 echo "<br />";
 访问修饰符
 public protected private
  public 当前类,子类中均可访问;
 protected 当前类,子类内部允许访问;
 private 当前类内部允许访问;
  这个地方需要重点了解:
 范围
  什么叫类内部?
 {}内叫类内部,出了{},实例化对象的时候构造函数也是内内部;
  Class Person{
  public $name;// 属性
 public $age;
 private $sex;// 私有属性
  public function eat($food){
 echo "eat ".$food;
 }
  function __construct($sex){
 echo "性别:".$sex;
 }
  }
  Class Student extends Person{
  public $student_id;
  public function write(){
 echo "I can write";
 }
  public function read(){
 echo "I can read";
 }
 }
  $person1=new Person("男");
 static 关键字
 为什么要有这么一个关键字?
  常量
 PI
  静态属性 public static $PI = 3.14;
 静态方法 
  静态成员访问方式(类外部):
 类名::属性名称
  在当前类中访问静态属性:
 statis::属性名;
  在子类内部访问父类静态成员,parent::属性名;statis::属性名;
  class Person
 {
  public $name;
 // 属性
 public $age;
  private $sex;
 // 私有属性
 public function eat($food)
 {
 echo "eat " . $food;
 }
  public static $PI = 3.14;
  /**
 * 构造函数
 */
 function __construct($sex)
 {
 echo "性别:" . $sex;
 }
  function show(){
 echo static::$PI;
 }
 }
  class Student extends Person
 {
  public $student_id;
  public function write()
 {
 echo "I can write";
 }
  function __construct()
 {}
  public function read()
 {
 echo "I can read";
 }
  public function add()
 {
 echo 1 + parent::$PI."<br />";
 echo 2 + static::$PI;
 }
 }
  $person1 = new Person("男");
 echo "<br />";
 $person1->show();
 echo "<br />";
 echo Person::$PI . "<br />";
 $student1 = new Student();
 echo Student::$PI;
 echo "<br />";
 $student1->add();
 方法的重写
 方法的重载
  什么叫相同的方法,什么叫不同的方法?
 回复:相同的方法:方法名称相同,方法的参数列表相同;
 不同的方法:方法名称不同;方法名称相同,方法的参数列表不同;
  为什么会有方法的重写?
 回复:父类定义的方法子类有同样的方法,子类的中的方法要实现有自己的行为;
  方法的重载
 为什么会有方法的重载?
 回复:类中同样一个方法名称,通过不同的参数传递实现各自的行为;
 final关键字
 跟方法的重写对应来的
 父类中有一个final关键字修饰的方法,子类想对该方法进行重写那是不被允许的;
 接口(interface)