/**
燕十八 公益PHP培训
课堂地址:YY频道88354001
学习社区:www.zixue.it
**/
<?php
/*************************************************************
面向对象三大特征:
1、封装
2、继承
3、多态
**************************************************************/
/*--------------------------------------------------------------
封装:
对于一个对象,对外界开发一个接口
调用接口时,内部进行操作,不需要外界知道
隐藏了内部的一些实现细节
权限修饰符:
作用:用来说明 属性/方法的权限特点
写在 属性/方法 前面
三个修饰符:
private 私有的,保护最严
protected 保护的
public 公共的,保护最松
疑问?
public 修饰的属性/方法,可以在哪儿访问?
答:在任意位置都可以访问 类外
protected 修饰的属性/方法,可以在哪儿访问?
答: 不能在类外调用
在类内调用
和子类中调用
private 修饰的属性/方法,可以在哪儿访问?
答: 不能在类外调用
只能在类内访问
private protected public
本类 V V V
子类 X V V
外部 X V V
在Java中,如果public/private/protected都不写
默认friendly
在PHP中,如果public/private/protected都不写
默认public
---------------------------------------------------------------*/
class Human{
private $money = 1000;
//访问 $money 的接口
public function getMoney(){
return $this->money;
}
//有些函数不能被外界访问 只能在类的内部访问
private function touchi(){
echo '小时候偷吃了一块肉';
}
}
$a = new Human();
echo $a->getMoney();
/*--------------------------------------------------------------
继承:
语法:extends
子类 extends 父类{
}
注意点:
1、子类 只能继承 一个父类
2、public protected 可以继承,并拥有访问和修改的权限
3、private 可以继承,但没有访问和修改的权限
4、构造函数可以继承
5、如果子类也声明构造函数,则父类构造函数被覆盖
6、子类的方法可以访问父类非私有的属性
7、父类的方法不能访问子类的属性
构造方法的继承:
new 子类();
只会执行子类的构造方法;
重写:
1、方法名 参数一样
2、权限不变或扩大
子类调用父类的方法:
parent::方法名();
--------------------------------------------------------------*/
class Human{
private $height=170;
private $name='Human';
public function __construct(){
echo 'Human ............<br />';
}
public function cry(){
echo $this->name,' Cry............<br />';
}
}
class Stu extends Human{
private $name='Sut';
public function __construct(){
parent::__construct(); //当子类重写了父类的构造函数 要显示调用
echo 'Stu ............<br />';
}
public function cry(){ //重写 覆盖[override]
parent::cry(); // 调用父类函数
echo $this->name,' Cry............<br />';
}
public function study(){
echo 'good good study, day day up<br />';
}
}
class Lawer extends Human{
private $area = '经济案件';
public function bianhu(){
echo '当事人无罪<br />';
}
}
$xiaozhang = new Stu();
$xiaozhang->cry();*/
/*
$zhoukou = new Human();
$zhoukou->cry();
$xiaozhang = new Stu();
$xiaozhang->study();
$xiaozhang->cry();
$lise = new Lawer();
$lise->bianhu();
$lise->cry();
/*--------------------------------------------------------------
多态:
1、按php本身的特点,不检测类型,本身就是多态
2、但是在PHP5.3以后,引入了对于对象类型的参数
检测,注意:只能检测对象所述的类
反思:
1、只抽象的声明父类,具体的工作由子类对象
来完成,这样不同的子类对象完成,有不同的
特点
--------------------------------------------------------------*/