>  기사  >  백엔드 개발  >  PHP의 추상 클래스

PHP의 추상 클래스

WBOY
WBOY원래의
2024-08-29 13:05:571048검색

추상 클래스처럼 추상 메서드도 있습니다. abstract 키워드를 사용하여 추상 메서드와 추상 클래스를 모두 선언합니다. 이번 주제에서는 PHP의 Abstract 클래스에 대해 알아보겠습니다.

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

상속 개념에 따라 부모 클래스는 파생 클래스에 의해 확장됩니다. 상위 클래스의 메서드는 파생 클래스에 의해 구현되거나 정의됩니다. PHP는 추상 클래스와 추상 메서드를 사용하여 상위 클래스를 더욱 구체적으로 만들 수 있습니다.

추상 클래스에는 필수로 하나의 메소드가 추상으로 포함됩니다. 또한 이 추상 클래스는 다른 비추상 메소드도 가질 수 있습니다.

구문

한 가지 메소드를 추상으로 사용하는 추상 클래스의 구문

abstract class DemoAbstractClass() {
abstract public function DemoAbstractMethod();
}

추상 방법

abstract public function DemoAbstractMethod();

PHP에서 추상 클래스는 어떻게 작동하나요?

이 글에서는 추상 클래스의 작동 방식을 배우게 되며, 그 내용은 다음과 같습니다.

이제 우리는 추상 클래스가 강제로 하나의 추상 메서드를 갖는다는 것을 알고 있습니다.

추상적이지 않은 방법도 있을 수 있습니다. 추상 메서드에는 기본 클래스의 선언만 있습니다. 다른 코드 없이 이름과 매개변수만 있다는 뜻입니다.

메서드를 더 자세히 정의하고 해당 메서드로 작업하려면 기본 클래스를 확장하는 파생 클래스에서 이 메서드를 구현해야 합니다. 또한 이 추상 클래스를 인스턴스화하여 객체를 생성할 수는 없지만 기본 클래스에서 파생된 클래스를 인스턴스화하여 객체를 생성할 수 있다는 점을 기억하세요.

PHP의 추상 클래스 예

다음은 PHP의 추상 클래스의 몇 가지 예입니다

예시 #1

아래 프로그램에서는 추상 클래스의 객체가 생성될 때 어떤 일이 일어나는지 알아봅니다.

추상 클래스 Student는 Student 클래스의 하나의 추상 메소드인 favouriteSubject() 메소드와 학생의 역할을 설정하고 가져오는 setRollNo() 및 getRollNO()와 같은 추상 메소드가 아닌 다른 두 메소드를 포함하여 생성됩니다. 파생 클래스(기본 클래스 확장).

코드:

<?php
abstract class Student {
protected $m;
public function setRollNo($rollno) {
return $this->m = $rollno;
}
public function getRollNo() {
return $this->m;
}
abstract public function favouriteSubject()
}
class Radha extends Student {
public function favouriteSubject() {
return "English";
}
}
$obj = new Student;    //this statement throws error as we cannot create object of class Student as it is defined as abstract
$obj = new Radha;  //this statement does not throws error and executes correctly
$obj->favouriteSubject();
?>

출력 :

PHP의 추상 클래스

예시 #2

이 예는 이 예의 코드와 함께 프로그램 출력 후 아래에서 단계별로 설명됩니다.

코드

abstract class Student{
protected $m;
abstract public function calulatePercentage();
public function setMarks($marks) {
return $this->m = $marks;
}
public function favoriteSubject() {
return 'Favorite subject is English';
}
}
class Ram extends Student{
public function calulatePercentage(){
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Ram is '.$percentage. '%' .'<br>';
}
}
class Sherry extends Student{
public function calulatePercentage(){
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Sherry is '.$percentage. '%' .'<br>';
}
public function favoriteSubject() {
return 'Favorite subject is Maths';
}
}
$ram = new Ram();
$ram->setMarks(92);
echo $ram->calulatePercentage();
echo $ram->favoriteSubject();
echo '<hr>';
$sherry = new Sherry();
$sherry->setMarks(97);
echo $sherry->calulatePercentage();
echo $sherry->favoriteSubject();

출력 :

PHP의 추상 클래스

추상 클래스는 파생 클래스의 뼈대라고 할 수 있습니다. 위의 예에서는 추상 클래스 Student를 선언하고 학생의 점수로 $m이라는 속성을 선언합니다.

예시 #2 설명

abstract class Student {
abstract public function calulatePercentage();
}

추상 클래스는 파생 클래스의 뼈대라고 할 수 있습니다. 이 예에서는 다른 메소드와 함께 추상 클래스 및 메소드를 선언합니다.

위의 예에서는 주어진 점수와 함께 학생의 비율을 계산하는 추상 방법을 사용하여 추상 클래스 Students를 선언했습니다.

또한 학생의 성적을 설정하고 학생이 가장 좋아하는 과목을 얻을 수 있는 방법(추상적이지 않은)을 만들었습니다.

abstract class Student{
abstract public function calulatePercentage();
public function setMarks($marks) {
return $this->m = $marks;
}
public function favoriteSubject() {
return 'Favorite subject is English';
}
}

추상 클래스 Student의 객체를 생성하려면 Student 클래스를 확장하고 파생 클래스를 생성해야 합니다. 기본 클래스는 확장 키워드를 사용하여 기본 클래스를 확장할 수 있도록 합니다. 클래스가 확장되면 이제 기본 클래스 메소드를 사용할 수 있습니다.

위의 예에서 Ram은 기본 클래스 Student를 확장하는 파생 클래스입니다. 확장 키워드를 사용합니다. 이제 Ram이 얻은 점수의 백분율을 계산하기 위해 백분율() 메서드를 계산했습니다.

class Ram extends Student{
public function calulatePercentage(){
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Ram is '.$percentage. '%' .'<br>';
}
}

더 많은 것을 배울 수 있도록 기본 클래스 Student를 확장하는 클래스를 하나 더 선언합니다.

위 예에서는 기본 클래스 Student에서 생성된 파생 클래스로 Sherry를 생성했습니다. 이것은 확장 키워드를 사용합니다. 여기에는 두 가지 기능이 있습니다. 추상, 기본 클래스의 calulatePercentage() 메서드, 다른 하나는 추상이 아닌 favoriteSubject() 메서드입니다.

class Sherry extends Student{
public function calulatePercentage(){
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Sherry is '.$percentage. '%' .'<br>';
}
public function favoriteSubject() {
return 'Favorite subject is Maths';
}
}

이제 기본 클래스의 객체와 파생 클래스의 객체를 생성하는데 오류가 발생합니다. 인스턴스화할 수 없기 때문에 클래스는 추상으로 선언됩니다.

따라서 파생 클래스의 객체만 생성될 수 있습니다. 이 작업이 완료되면 이 개체를 사용하여 아래와 같이 추상 메서드가 아닌 추상 메서드를 호출하게 됩니다.

$ram = new Ram();
$ram->setMarks(92);
echo $ram->calculatePercentage();
echo $ram->favoriteSubject();
echo '<hr>';
$sherry = new Sherry();
$sherry->setMarks(97);
echo $sherry->calculatePercentage();
echo $sherry->favoriteSubject();

Conclusion

In this article, I hope you learned about how the abstract class is declared, how it works, how it is extended using extends keywords, how the abstract method is declared in the base class and how it is implemented in the derived class. The examples explained will help you learn the concept at ease. I hope it was prepared to be useful enough to grasp and practice more.

위 내용은 PHP의 추상 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP의 다형성다음 기사:PHP의 다형성