js面向对象
类:具有相同的特征的一些对象的集合。
对象:具体到某一个事物了都可以叫作对象。
类 通过function 定义类 所以在js里类的本质是函数;类的标志 首字母大写 函数内部使用this 调用函数是使用new关键字。
类和函数天生有两个属性是prototype和__proto__;Prototype又是一个对象天生有一个constructor的属性,属性值是函数和类本身。
普通对象天生有一个__proto__的属性,这个属性是对象,指向他的父类。
php面向对象
1、类的创建 class 创建类
class Person{
}
2、对象的创建 使用new 关键字
class Person{
}
$p1=new Person;
3、成员的添加
添加成员需要 三个修饰符:
Public: 公开的 定义公共的属性和方法,类的外部,类的内部,子类都可以使用
protected: 受保护的 定义受保护的属性和方法 只能在类的内部和子类里使用
Private :私有的 定义私有的属性和方法 只能在自身的类里使用
方法成员如果前面不加修饰符 默认是public
4成员调用使用->符号
$p1=new Person;
$p1->fn( );
使用成员属性和方法的时候 属性和方法前面不带$符
$p1=new Person;
$p1->fn( );
echo $p1->name;
5 特殊对象$this 指向实例化的对象,如果类的方法里想使用类的其他属性和方法得需要使用$this对象
public $name="lisi";
public function fn(){
echo $this->name;
}
6.构造方法function __construct() 构造函数在new实例化的时候系统会自动调用
public $name;
function __construct($name){
$this->name=$name;
}
piblic function fn(){
echo $this->name;
}
7、析构方法
我们每次new实例化,系统就会给这个对象分配一个内存空间,如果不销毁,系统压力会很大,系统有一个析构方法 __destruct 对象实例化之后系统会自动调用。内存销毁的原则是先进后销。
8.成员赋值
$p1->name="456";
echo $p1->name;
9.php中的继承使用关键字 extends
class Person{
public $name="lisi";
public function fn(){
echo 11111;
}
}
class Child extends Person{
}
$c=new Child;
var_dump($c);
$c->fn();
10、类中常量 使用const关键字定义常量,常量在定义和使用的时候不能带$符。
使用的时候不能用$this 使用范围修饰符 :: 前面还是这个类名或self
const ad="xiaoxu";
public $name="lisi";
public function fn(){
echo self::ad;
}
如果子类向访问父类中的常量 使用parent::常量名
11、静态变量 在变量前加上关键字 static 静态属性 不能使用->访问了,使用类名::$变量名;
class Person{
public static $name="123";
}
$p=new Person;
echo Person::$name;
12、重载 覆盖
子类继承父类的方法时,如果子类有和父类同名的方法,从父类那继承的方法就会被覆盖掉,这个就叫重载。
如果父类的方法前面加上final 则子类无法重载父类的方法,就会报错。
13、调用父类构造方法
PHP不会在子类的构造方法中自动的调用父类的构造方法,要执行父类的构造方法,需要在子类的构造方法中调用parent::__construct().
来源:https://www.cnblogs.com/z1287529611/p/11360145.html