Php OOP 파트-2

5277 단어
내 .Here의 속편입니다. 여기에서 부모 생성자, 정적 클래스, 메서드 재정의, 추상 클래스에 대해 이야기하겠습니다.
1-부모 생성자

<?php 
 class Student{
     public $age;
     public $name;

     public function __construct($name,$age){
         $this->name=$name;
         $this->age=$age;


     }
     public function profile()
     {
         # code...
         echo "His name is {$this->name} and age is {$this->age}";
     }
 }



여기서 우리는 2개의 클래스를 취하고 2개의 속성이 생성자에 값을 할당하고 프로파일 메서드에 에코합니다.
그럼 우리

 class Adminstration extends Student{
     public $grade;

     public function __construct($name,$age,$grade){
         $this->grade=$grade;

         parent::__construct($name,$age);


     }
     public function profile()
     {
     echo "His name is {$this->name} and age is {$this->age} and 
 grade is {$this->grade}";
     }



 }

$admin=new Adminstration("Tanzim",25,4);
$admin-> adminprofile();


여기에서 관리 클래스의 관리 클래스로 학생 클래스를 확장하여 새 속성 $grade를 할당한 다음 구성 메서드 내부에서 parent::construct를 사용하여 여기에서 부모 클래스인 Student의 생성자 메서드 내부 속성에 액세스합니다.
2. 정적 클래스

<?php 



class Student{
    public static $age=15;

    public static function profile(){
        echo "His age is ".self::$age;
    }

}

echo Student::$age;
echo Student::profile();



?>


정적 속성과 메서드는 클래스를 인스턴스화하지 않고 액세스할 수 있는 것입니다. 여기서 age는 정적 속성이고 프로필은 정적 함수입니다.
우리는 그냥 속성에 액세스 할 수 있습니다

echo Student::$age;


 public static function profile(){
        echo "His age is ".self::$age;
    }
echo Student::profile();


정적 함수 내부의 속성에 액세스하려면 self 키워드를 사용해야 합니다.

<?php 
 class Student{
     public $age;
     public $name;

     public function __construct($name,$age){
         $this->name=$name;
         $this->age=$age;


     }
     public function profile()
     {
         # code...
         echo "His name is {$this->name} and age is {$this->age}";
     }
 }

 class Adminstration extends Student{
     public $grade;

     public function __construct($name,$age,$grade){
         $this->grade=$grade;

         parent::__construct($name,$age);


     }
     public function profile()
     {
         # code...
         echo "His name is {$this->name} and age is {$this->age} and grade is {$this->grade}";
     }



 }

$admin=new Adminstration("Tanzim",25,4);
$admin-> adminprofile();



메서드 재정의
부모 클래스를 확장하는 자식 클래스를 인스턴스화하고 부모 클래스와 자식 클래스 또는 상속 된 클래스가 클래스와 동일한 이름의 메서드를 갖는 경우 속성과 메서드를 상속하도록 부모 클래스를 확장하면 부모 클래스의 메서드를 재정의하고 같은 메서드 이름 자식 클래스

<?php 

class Student{
    public function profile(){
        echo "Profile from student class";

    }

}

class Adminstration extends Student{
    // public function profile(){
    //     echo "Profile from adminstration class";

    // }


}
$stu=new Student;

// $stu->profile();
$admin=new Adminstration;
$admin->profile();


여기서 우리는 부모 클래스의 속성과 메서드를 상속하는 자식 클래스인 Administration 클래스를 봅니다. 여기에서 자식 클래스 Administration을 인스턴스화하고 부모 클래스의 메서드를 제공하는 메서드 프로필을 지적할 때 볼 수 있습니다.

그런 다음 클래스를 작성하면

<?php 

class Student{
    public function profile(){
        echo "Profile from student class";

    }

}

class Adminstration extends Student{
    public function profile(){
        echo "Profile from adminstration class";

    }


}
$stu=new Student;


$admin=new Adminstration;
$admin->profile();


여기에서 부모 클래스를 확장하는 자식 클래스인 Adminstration을 볼 수 있으며 여기에서 자식 클래스와 부모 클래스 모두 profile이라는 이름의 동일한 메서드를 가집니다. 이 경우 이것이 우리가 얻는 출력입니다.

여기에서 자식 클래스의 메서드가 부모 클래스의 속성을 재정의하고 자식 클래스에서 속성을 가져오는 것을 볼 수 있습니다.
추상 클래스
추상 클래스는 다른 클래스가 확장해야만 사용할 수 있는 클래스입니다.

<?php 

abstract class Student{
    public function profile(){
        echo "Profile";
    }
}


$tech=new Student;

$tech->profile();
?>


여기서 클래스를 인스턴스화하면 이 오류가 발생합니다.

하지만 우리가 쓴다면

<?php 

abstract class Student{
    public function profile(){
        echo "Profile";
    }
}

class Teacher extends Student{

}
$tech=new Student;

$tech->profile();

?>


여기서 클래스를 확장하고 자식 클래스를 인스턴스화하면 부모 클래스에 액세스할 수 있습니다. 부모 클래스에서 프로필을 인쇄합니다.
그래서 php oop의 파트 2는 다음 파트에서 인터페이스, 특성 등과 같은 몇 가지 개념에 대해 논의할 것입니다.

좋은 웹페이지 즐겨찾기