PHP 5.0 대상 모델 탐색 의 추상 적 방법 과 추상 류
추상 적 인 방법 은 하위 클래스 의 일반적인 방법 과 같은 자리 차지 문자(한 곳 을 차지 하지만 역할 을 하지 않 음)로 일반적인 방법 과 달리 코드 가 없다.만약 에 유형 에 하나 이상 의 추상 적 인 방법 이 존재 한다 면 이런 유형 은 추상 적 인 유형 이 된다.너 는 추상 류 를 예화 할 수 없다.너 는 그것들 을 계승 한 다음 에 실례 화 자 류 를 만들어 야 한다.추상 류 를 하위 류 의 템 플 릿 으로 볼 수도 있다.
만약 네가 모든 추상 적 인 방법 을 복작 한다 면,자 류 는 일반적인 종류 가 될 것 이다.모든 방법 을 덮어 쓰 지 않 으 면 하위 클래스 는 추상 적 입 니 다.만약 한 클래스 에 추상 적 인 방법(하나 라 도)이 포함 되 어 있다 면,이 클래스 는 추상 적 이 며,class 키워드 앞 에 abstract 를 붙 여야 합 니 다.
추상 적 인 방법 을 설명 하 는 문법 은 일반적인 방법 과 달리 추상 적 인 방법 은 일반적인 방법 처럼 대괄호{}에 포 함 된 주체 부분 이 없고 분점 을 사용한다.자,끝.
예 6.13 에서 우 리 는 getArea 방법 을 포함 한 클래스 Shape 를 정의 했다.그러나 모양 이 도형 의 면적 을 확정 할 수 없다 는 것 을 모 르 기 때문에 우 리 는 getArea 방법 을 추상 적 인 방법 이 라 고 밝 혔 다.Shape 대상 을 예화 할 수 는 없 지만 계승 하거나 표현 식 에서 사용 할 수 있 습 니 다.예 6.13 과 같 습 니 다.
추상 적 인 방법 만 있 는 클래스 를 만 들 면 인터페이스(interface)를 정의 합 니 다.이러한 상황 을 설명 하기 위해 PHP 에는 interface 와 implements 키워드 가 있 습 니 다.추상 적 인 클래스 대신 interface 를 사용 할 수 있 습 니 다.extends 대신 implements 로 클래스 정 의 를 설명 하거나 인 터 페 이 스 를 사용 할 수 있 습 니 다.예 를 들 어 my Class implements my Iterface 를 쓸 수 있 습 니 다.이 두 가지 방법 은 개인 적 인 선 호 에 따라 선택 할 수 있 습 니 다.
/*주:두 가지 방법 은 다음 과 같 습 니 다.1.abstract class aaa{}(aaa 에 추상 적 인 방법 만 있 고 일반적인 방법 은 없습니다)class bbb extends aaa{}(bbb 에 aaa 의 추상 적 인 방법 을 덮어 씁 니 다)2.interface aaa{}class bbb implements aaa{}(bbb 에 aaa 의 추상 적 인 방법 을 덮어 씁 니 다)*/
Listing 6.13 Abstract classes
//abstract root class 추상 루트 클래스 abstract class Shape{abstract function getArea();/추상 적 인 방법 정의}
//abstract child class 추상 하위 클래스 추상 클래스 다각형 extends Shape//다각형{abstract function getNumberOfSides();}
//concrete class 실체 류 삼각형 클래스 Triangle extends Polygon{public$base; public $height;
public function getArea()//덮어 쓰기 면적 계산 방법{return($this->base*$this->height)/2); }
public function getNumberOfSides()/덮어 쓰기 변수 통계 방법{return(3); } }
//configrete class 실체 클래스 사각형 class Rectangle extends Polygon{public$width; public $height;
public function getArea() { return($this->width * $this->height); }
public function getNumberOfSides() { return(4); } }
//configrete class 실체 클래스 원형 class Circle extends Shape{public$radius;
public function getArea() { return(pi() * $this->radius * $this->radius); } }
//configrete root class 는 색상 클래스 class Color{public$name;}을 정의 합 니 다.
$myCollection = array(); //모양 의 집합 을 만들어 배열 에 넣 습 니 다.
//make a rectangle $r = new Rectangle; $r->width = 5; $r->height = 7; $myCollection[] = $r; unset($r);
//make a triangle $t = new Triangle; $t->base = 4; $t->height = 5; $myCollection[] = $t; unset($t);
//make a circle $c = new Circle; $c->radius = 3; $myCollection[] = $c; unset($c);
//make a color $c = new Color; $c->name = "blue"; $myCollection[] = $c; unset($c);
foreach($my Collection as$s){if($s instanceof Shape)//$s 가 Shape 류 의 인 스 턴 스 라면{print("Area:".$s->getArea()."n"); }
if($s instanceof Polygon) { print("Sides: " .$s->getNumberOfSides()."n"); }
if($s instanceof Color) { print("Color: $s->name n"); }
print("n"); }
?>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
poj 2540 Hotter Colder(선형 계획 가능 영역)Hotter Colder Time Limit: 1000MS Memory Limit: 65536K The children's game Hotter Colder is played as follows. Player A l...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.