首页 > 技术文章 > 类的继承、派生、权限,父类概念

wjwap 2019-03-15 10:02 原文

类的继承:
某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息。

继承和派生:
继承:一个类从另一个已有的类获得其特性,称为继承。
派生:从一个已有的类产生一个新的类,称为派生。
继承和派生,其实只是从不同的方向(角度)来表述,本质上就是一个事情。
父类/子类:已有类为父类,新建类为子类。父类也叫“基类”,子类也叫“派生类”
单继承:一个类只能从一个上级类继承其特性信息。PHP和大多数面向对象的语言都是单继承模式。C++是多继承。
扩展:在子类中再来定义自己的一些新的特有的特性信息(属性,方法和常量)。没有扩展,继承也就没有意义了
访问(权限)修饰符
在类中的成员,通常都可以在前面加上以下3个修饰符:
public:公共的,共有的,公开的
protected:受保护的
private:私有的,

public公有的
用该修饰符修饰的成员,可以在“任何位置”使用(访问)。
访问(使用)是这样一个语法模式:
对象->成员;
类名::成员;
访问位置分为3个:
1:某个类内部:自然是该类的某个方法中
2:某个类的具有继承关系的子(父)类的内部:是指其他类的某个方法中。
3,某个类的外部:一般就是独立的代码区(不在类中),类似我们之前的代码。
private私有的
private 修饰的成员,只能在其所在的类中访问。
访问修饰限定符的总结:
范围 本类内 继承关系类内 类外
public 可以 可以 可以
protected 可以 可以 不可以
private 可以 不可以 不可以
parent代表父类
对比:self代表“本类”(自己当前类)
parent通常用于在子类中调用父类的成员的时候使用,多数通常就是使用父类的“静态类”成员。
——因为parent代表的类,而非对象。
例:
class BaseClass {
public $public = 'public';
private $private = 'private';
protected $protected = 'protected';
function construct(){
}
function print_var(){
print $this->public;echo '<br />';
print $this->private; echo '<br />';
print $this->protected; echo '<br />';
}
}
class Subclass extends BaseClass {
protected $protected ='protected2';
function construct(){
echo $this->protected;//可以访问,因为类中定义为受保护的,所以在本类或子类中可以,子类中还可以重复付值
echo '<br />';
echo $this->private;//error 因为是私有的只有在定义她的类baseclass中可以用
}
}
$obj1 = new BaseClass();
$obj1->print_var();
echo $obj1->protected;//error 因为是受保护的,只有在本类内部或子类父类中可以调用
echo $obj1->private;//error 同上私有的,只有在本类内调用
echo $obj1->public;
echo "<hr />";
$obj2 = new Subclass();
echo '<br />';
echo $obj2->public;echo '<br />';
echo $obj2->protected;
echo $obj2->private;//error
echo $obj2->protected;//error

推荐阅读