代码片段
父类:
class DBSQL{
private $CONN=""; //定义数据库变量
public function __construct(){
try{
$conn = mysql_connect(ServerName,UserName,PassWord);
}catch(Exception $e){
$msg = $e;
include(ERRFILE);
}
子类:
require_once('db_inc.php');
class Vote extends DBSQL{
public $_name = 'vote_info';
public $_item = 'item_info';
public $_user = 'vote_user';
public $_pagesize = 10;
public $_type = array("1"=>"单选","2"=>"多选");
public $_display = array("0"=>"禁用","1"=>"启用"); private function __construct(){
parent::__construct();
}报错:
Fatal error: Access level to Vote::__construct() must be public (as in class DBSQL) in C:\APMServ5.2.6\www\htdocs\php\vote\vote.inc.php on line 8问题描述:
为什么我父类用public,子类调用父类构造函数用private不行呢?
父类:
class DBSQL{
private $CONN=""; //定义数据库变量
public function __construct(){
try{
$conn = mysql_connect(ServerName,UserName,PassWord);
}catch(Exception $e){
$msg = $e;
include(ERRFILE);
}
子类:
require_once('db_inc.php');
class Vote extends DBSQL{
public $_name = 'vote_info';
public $_item = 'item_info';
public $_user = 'vote_user';
public $_pagesize = 10;
public $_type = array("1"=>"单选","2"=>"多选");
public $_display = array("0"=>"禁用","1"=>"启用"); private function __construct(){
parent::__construct();
}报错:
Fatal error: Access level to Vote::__construct() must be public (as in class DBSQL) in C:\APMServ5.2.6\www\htdocs\php\vote\vote.inc.php on line 8问题描述:
为什么我父类用public,子类调用父类构造函数用private不行呢?
http://topic.csdn.net/u/20100310/11/62a60067-b3da-4dee-9d6a-f1baeb2f3f33.html
While overriding decreasing access specifier is not allowed原因是一个Vote对象也可以看作一个DBSQL对象,
...这样说不清楚
这样说吧 class 鸟{
public function 飞(){
}
}
class 鹰 extends 鸟{
public function 飞(){
}
}这个就是说鹰是鸟的一种,那么鸟会飞,鹰也应该会飞
如果鹰::飞设为private,那么不能从外部操作,
这样对用户来讲,就变成鹰不会飞了.....
飞设为private,那么不能从外部操作
但他是将自己的构造方法私有 那这样如果new了这一个类的对象 照理说不是应该这个对象也能访问这个访问才对
$小鹰 = new 鹰();
鹰将构造方法私有为鹰,小鹰也是鹰的一种 它不是应该能访问才对