Sınıflar genişletilmiş olma niyetiyle veya genişletilmiş olma niyeti olmadan tasarlanmıştır. Sınıf bir ebeveyn olmanın bir niyeti varsa, bu kesin olarak belirtilmelidir. Uzatılabilir tasarlanmış bir sınıf çocuğun çalışmak olacaktır hangi çerçeve hazırlamak için sorumluluğu vardır. Çerçevenin kuralları tanımlamak Herhangi yöntemler nihai olarak belirtilmelidir.
Bu açıklama soru gibi muğlak.
Ben Anurag gelen muhasebe örneği gibi ve ben nasıl doğru kullanımını göstermek istiyoruz.
abstract class Account {
// obtained by some magical source
private $balance = 100.00;
final public function getBalance() {
return $this->balance;
}
final private function setBalance($new_balance) {
$this->balance = $new_balance;
}
final public function debit(Amount $amount) {
if ($this->canDebit($amount)) {
$amount = $amount + $this->getDebitTransactionFee();
$this->setBalance($this->getBalance() - $amount);
}
}
abstract protected function canDebit();
abstract protected function getDebitTransactionFee();
}
final class CheckingAccount extends Account {
final protected function canDebit() {
return true;
}
final protected function getDebitTransactionFee() {
// obtained by some magical source
return 1.50;
}
}
Hesap sorumluluk, denge takip kamu borç izin ve kamu cari denge kontrol sağlamaktır. CheckingAccount sorumluluğu da tahsil edilebilir eğer cevaplamak ve ilgili işlem ücreti rapor etmektir. Açıkçası burada muhasebe son derece kolaylaştırılmıştır. Bu örnek, büyük olasılıkla sonsuz durumlardan biridir.
Soyut sınıflar genişletilmesi gerekiyordu sınıfları için oldukça yaygındır. Ancak bazen, bir sınıfı varsayılan fonksiyonu ile kendi olmayan final yöntemlerini tanımlamak ve operasyonel bir örneği olabilir. Tabii, sigara final olmak, bu varsayılan yöntemler daha sonra bir çocuk sınıf tarafından geçersiz kılınabilir için ücretsizdir.