[php]クラスを継承
#1
<?php
class Animal {
function run() {
print('running....');
}
function breathe() {
print('breathing...');
}
}
// Animal 클래스 상속 받음.
class Human extends Animal {
function think() {
print('thinking...');
}
function talk() {
print('talking...');
}
}
$animal = new Animal();
$animal->run();
$animal->breathe();
$human = new Human();
$human->run();
$human->breathe();
$human->think();
$human->talk();
#2
<?php
$file = new SplFileObject('data.txt');
var_dump($file->fread($file->getSize()));
$file->rewind(); // 파일 커서 처음으로 이동
var_dump($file->fread($file->getSize()));
class MyFileObject extends SplFileObject {
function getContents() {
$contents = $this->fread($this->getSize());
$this->rewind();
return $contents;
}
}
$myFile = new MyFileObject('data.txt');
var_dump($myFile->getContents());
#3
<?php
class ParentClass{
function callMethod($param){
echo "<h1>Parent {$param}</h1>";
}
}
class ChildClass extends ParentClass{
function callMethod($param){
parent::callMethod($param);
echo "<h1>Child {$param}</h1>";
}
}
$obj = new ChildClass();
$obj->callMethod('method');
#4
<?php
class ParentClass {
public $_public = '<h1>public</h1>';
protected $_protected = '<h1>protected</h1>'; // 상속관계를 통해 연결되어있는 클래스에서만 접근 가능
private $_private = '<h1>private</h1>'; // 이 클래스 안에서만 유효 (상속받은 자식은 접근 불가)
}
class ChildClass extends ParentClass {
function callPublic() {
echo $this->_public;
}
function callProtected() {
echo $this->_protected;
}
function callPrivate() {
echo $this->_private;
}
}
$obj = new ChildClass();
echo $obj->_public;
//echo $obj->_protected; // 직접 접근 불가
echo $obj->_private;
$obj->callPublic();
$obj->callProtected(); // 접근 가능
$obj->callPrivate();
#5
<?php
// 클래스 전체를 상속받지 못하게 하려면 final class 사용
class ParentClass {
function a() {
echo 'Parent';
}
final function b() {
echo 'Parent B';
}
}
class ChildClass extends ParentClass {
function a() {
echo 'Child';
}
// 오버라이드 불가
// function b() {
// echo 'Child B';
// }
}
$obj = new ChildClass();
$obj->a();
Reference
この問題について([php]クラスを継承), 我々は、より多くの情報をここで見つけました https://velog.io/@devyang97/php-class-상속テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol