宝马娱乐在线112222 > 网络应用 > __construct 构造函数用法

原标题:__construct 构造函数用法

浏览次数:50 时间:2019-10-01

construct 自定义的函数或方法.

我的小狗有名字,我的小狗太小了,不会大声的叫,只会哼哼。

<?php
class myName{
function __construct($myName){    //连续两个下划线
  echo ("我的名字是:$myName<br>");
}
}
$name1 = new myName("小猫");
$name2 = new myName("小狗");
$name3 = new myName("小马");
?>

 

<?php
class myName{
function construct($myName){
  echo ("我的名字是:$myName<br>");
}
}
$name1 = new myName("小猫");
$name2 = new myName("小狗");
$name3 = new myName("小马");
?>

 代码如下

__construct 构造函数 类在被实例化时就会执行.

 my dog hava 3 eyes.

与之比较的是:

 } 
 ?>

      class Student extends Person{ 

重写时的参数数量
子类可以拥有与父类不同的参数数量。(这点与java不同,PHP是弱类型语言。)

下面这个例子中,父类和子类都有自己的构造函数,当子类被实例化时,子类的构造函数被调用,而父类的构造函数没有被调用,请对比第一节的构造函数继承。

 Fatal error: Access level to MyDog::getEyeNumber() must be public (as in class Dog) in E:PHPProjectstest.php on line 15

 代码如下

           }                                                      

 <?php 

构造函数重写

父类为public 子类为 private时。

重写时的参数数量

<?php
      class Person{
                                                              
           public $name;     
                                                             
           public function __construct($name="" ){
                $this->name =$name;
                                                                      
           }
           public  function say(){
                echo "我叫".$this->name  ;
           }
                                                                 
 }
 ?>
 <?php
      class Student extends Person{
                                                              
           public $name;             
                                                             
           public function __construct($name=""){
                $this->name =$name;
                                                         
           }
 //这里定义了一个和父类中同名的方法,将父类中的说话方法覆盖并重写
           public  function say(){
                echo "我叫".$this->name .",今年25岁了" ;
           }
                                                                 
 }
 ?>

<?
//2-2 / extends1.php
//构造函数继承的问题.
class Animal{
 public $legNum = 0;
 public function __construct(){
  $this->legNum = 4;
  echo "I am an animal<br>";
 }
}
class Dog1 extends Animal {
 public function __construct(){
  $this->legNum = 4;
  echo "I am a Dog .<br>";
 }
}
$dog1 = new Dog1();
echo "<br>";
echo  "legNum is ".$dog1->legNum;
/*
实例化子类时.构造函数被调用了.
*/
?>

                                                

                                      

重写方法与访问权限
子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。

              echo ",今年".$this->age."岁了" ;   

构造函数重写

注:这点和Java不同,在java中构造函数是不能被继承的,而且子类实例化时,子类的构造函数被调用,父类的构造函数也会调用。

 

程序运行结果:

程序运行结果:

 I am a Dog . 
legNum is 4

 <?php 

子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。

我们用继承的概念去实现这个设计。

           public  function say(){ 
             parent::say(); 

Dog有2个眼睛,会跑,会叫。就这样描述先。

我养了一直狗,是只小狗,符合Dog类的特性,但有所不同。

子类可以拥有与父类不同的参数数量,如下面的构造方法中,多添加了一个参数$age。

 代码如下

$myDog = new MyDog();
echo "my dog hava ".$myDog->getEyeNumber(3) ." eyes.";
//啸天犬..哈..
//下面这句会报一个丢失参数的错误.
//echo "my dog hava ".$myDog->getEyeNumber() ." eyes.";
?>

              $this->age =$age; 
         } 

本文由宝马娱乐在线112222发布于网络应用,转载请注明出处:__construct 构造函数用法

关键词:

上一篇:php宝马娱乐在线112222 ubb代码解析程序

下一篇:没有了