ಈ ಲೇಖನದಲ್ಲಿ, ನಾವು PHP ಯಲ್ಲಿ ಅಮೂರ್ತ ವರ್ಗವನ್ನು ಕಲಿಯುತ್ತೇವೆ.
PHP ಯಲ್ಲಿ ಅಮೂರ್ತ ವರ್ಗ ಎಂದರೇನು?
ಅಮೂರ್ತ ವರ್ಗವು ವಿಧಾನಗಳ ಘೋಷಣೆಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಆದರೆ ಅವುಗಳ ವ್ಯಾಖ್ಯಾನವಲ್ಲ. ಇದು ಅವರ ಹೆಸರನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಿದೆ. ಈ ವಿಧಾನಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು ಮಕ್ಕಳ ವರ್ಗದ ಜವಾಬ್ದಾರಿಯಾಗಿದೆ.
ಅಮೂರ್ತ ವಿಧಾನ ಎಂದರೇನು?
ಅಮೂರ್ತ ವಿಧಾನವು ಅಮೂರ್ತ ವರ್ಗದ ಒಂದು ವಿಧಾನವಾಗಿದೆ, ಇದನ್ನು ಅಮೂರ್ತ ಕೀವರ್ಡ್ಗಳನ್ನು ಬಳಸಿ ಘೋಷಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ದೇಹವನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ. ಇದನ್ನು ಮಗುವಿನ ವರ್ಗದಿಂದ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ.
- ಅಮೂರ್ತ ಅಮೂರ್ತ ವರ್ಗ ಅಥವಾ ವಿಧಾನವನ್ನು ಘೋಷಿಸಲು ಕೀವರ್ಡ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
- ಒಂದು ಅಮೂರ್ತ ವರ್ಗವು ಕನಿಷ್ಟ ಒಂದು ಅಮೂರ್ತ ವಿಧಾನವನ್ನು ಹೊಂದಿರಬೇಕು. ಆದಾಗ್ಯೂ, ಇದು ಅಮೂರ್ತವಲ್ಲದ ವಿಧಾನಗಳನ್ನು ಸಹ ಒಳಗೊಂಡಿರುತ್ತದೆ.
ಸಿಂಟ್ಯಾಕ್ಸ್
<?php
abstract class ParentClass {
abstract public function someMethod1();
abstract public function someMethod2($name, $color);
abstract public function someMethod3() : string;
}
?>
PHP ಯಲ್ಲಿ ಅಮೂರ್ತ ವರ್ಗದ ನಿಯಮಗಳು ಯಾವುವು?
- ಒಂದು ಅಮೂರ್ತ ವರ್ಗವು ಕನಿಷ್ಟ ಒಂದು ಅಮೂರ್ತ ವಿಧಾನವನ್ನು ಹೊಂದಿರಬೇಕು. ಆದಾಗ್ಯೂ, ಇದು ಅಮೂರ್ತವಲ್ಲದ ವಿಧಾನಗಳನ್ನು ಸಹ ಒಳಗೊಂಡಿರುತ್ತದೆ.
- ಒಂದು ಮಗು ಅಮೂರ್ತ ಪೋಷಕ ವರ್ಗವನ್ನು ಆನುವಂಶಿಕವಾಗಿ ಪಡೆದಾಗ, ಅದು ಅದೇ ಹೆಸರಿನೊಂದಿಗೆ ಪೋಷಕ ವರ್ಗದ ಅಮೂರ್ತ ವಿಧಾನಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬೇಕು.
- ಮಕ್ಕಳ ವರ್ಗದಲ್ಲಿ ಅಮೂರ್ತ ವಿಧಾನಗಳನ್ನು ವಿವರಿಸುವಾಗ, ಅದನ್ನು ಕಡಿಮೆ ನಿರ್ಬಂಧಿತ ಪ್ರವೇಶ ಮಾರ್ಪಾಡುಗಳೊಂದಿಗೆ ವ್ಯಾಖ್ಯಾನಿಸಬೇಕು. ಉದಾಹರಣೆಗೆ, ಮೂಲ ವರ್ಗವು ಹೊಂದಿರುವ ಅಮೂರ್ತ ವಿಧಾನವನ್ನು ಹೊಂದಿದ್ದರೆ ರಕ್ಷಣೆ ಪ್ರವೇಶ ಪರಿವರ್ತಕ. ಆದ್ದರಿಂದ, ಮಕ್ಕಳ ವರ್ಗವು ಈ ವಿಧಾನವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿದಾಗ, ಅದು ತನ್ನ ಪ್ರವೇಶ ಪರಿವರ್ತಕವನ್ನು ಇಟ್ಟುಕೊಳ್ಳಬೇಕು ರಕ್ಷಣೆ or ಸಾರ್ವಜನಿಕ. ಇದನ್ನು ಹೊಂದಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ ಖಾಸಗಿ, ಏಕೆಂದರೆ ಇದು ಸಂರಕ್ಷಿತಕ್ಕಿಂತ ಹೆಚ್ಚು ನಿರ್ಬಂಧಿತವಾಗಿದೆ.
- ಅಮೂರ್ತ ವಿಧಾನವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಮಕ್ಕಳ ವರ್ಗವು ಮೂಲ ಅಮೂರ್ತ ವರ್ಗದಲ್ಲಿನ ಘೋಷಣೆಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸಮಾನ ಸಂಖ್ಯೆಯ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ರವಾನಿಸಬೇಕು. ಆದಾಗ್ಯೂ, ಮಕ್ಕಳ ವರ್ಗವು ಅಗತ್ಯಕ್ಕಿಂತ ಬೇರೆ ಐಚ್ಛಿಕ/ಹೆಚ್ಚುವರಿ ವಾದಗಳನ್ನು ಹೊಂದಬಹುದು.
PHP ನಲ್ಲಿ ಅಮೂರ್ತ ವರ್ಗದ ಉದಾಹರಣೆ
<?php
// Parent abstract class
abstract class Bike {
public $name;
public function __construct($name) {
$this->name = $name;
}
abstract public function introduction() : string;
}
// Child classes defining the parent classes
class Honda extends Bike {
public function intro() : string {
return "I am $this->name!";
}
}
class Suzuki extends Bike {
public function introduction() : string {
return "I am $this->name!";
}
}
// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();
$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();
?>
ಮೇಲಿನ ಉದಾಹರಣೆಯ ವಿವರಣೆ
- ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು ಅಮೂರ್ತ ವರ್ಗವನ್ನು ರಚಿಸುತ್ತೇವೆ ಬೈಕ್ ಅದು ಅಮೂರ್ತ ವಿಧಾನವನ್ನು ಒಳಗೊಂಡಿದೆ ಪರಿಚಯ.
- ನಾವು ಎರಡು ಮಕ್ಕಳ ತರಗತಿಗಳನ್ನು ರಚಿಸುತ್ತೇವೆ ಹೋಂಡಾ ಮತ್ತು ಸುಜುಕಿ ಅದು ಅಮೂರ್ತ ವರ್ಗವನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ ಮತ್ತು ಪರಿಚಯ ವಿಧಾನವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.
- ನಾವು ಈ ವರ್ಗಗಳ ವಸ್ತುಗಳನ್ನು ರಚಿಸುತ್ತೇವೆ ಮತ್ತು ಅವುಗಳ ವಸ್ತುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪರಿಚಯ ವಿಧಾನವನ್ನು ಕರೆಯುತ್ತೇವೆ. ಪರಿಚಯದ ವಿಧಾನವು ಅದರ ಅನುಗುಣವಾದ ವರ್ಗದಿಂದ ನೀಡಲಾದ ಅನುಷ್ಠಾನದ ಪ್ರಕಾರ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ವಿಧಾನದ ಅತಿಕ್ರಮಣದಲ್ಲಿ ಹೆಚ್ಚುವರಿ ವಾದಗಳೊಂದಿಗೆ ಅಮೂರ್ತ ವರ್ಗದ ಉದಾಹರಣೆ
<?php
// Parent abstract class
abstract class Bike {
public $name;
public function __construct($name) {
$this->name = $name;
}
abstract protected function introduction($model) : string;
}
// Child classes defining the parent classes
class Honda extends Bike {
public function intro($model) : string {
return "I am $this->name. My model is $model";
}
}
class Suzuki extends Bike {
public function introduction($model, $color=null) : string {
return "I am $this->name. My model is $model and color is $color";
}
}
// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();
$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();
?>
ಮೇಲಿನ ಉದಾಹರಣೆಯ ವಿವರಣೆ
- ಮೇಲಿನ ಉದಾಹರಣೆಯ ಮೂಲ ತರ್ಕವು ಹಿಂದಿನ ಉದಾಹರಣೆಯಂತೆಯೇ ಇದೆ. ಆದಾಗ್ಯೂ, ಪರಿಚಯದ ವಿಧಾನದಲ್ಲಿ ನಾವು ಕಾರ್ಯಕ್ಕೆ ಹೆಚ್ಚುವರಿ ವಾದವನ್ನು ರವಾನಿಸುತ್ತೇವೆ ಸುಜುಕಿ ವರ್ಗ.
- ಈ ಟ್ಯುಟೋರಿಯಲ್ನಲ್ಲಿ ನಾವು ಮೊದಲೇ ನಿಯಮವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿದಂತೆ, ಪೋಷಕ ವರ್ಗದ ಅಮೂರ್ತ ವಿಧಾನವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ ಮಕ್ಕಳ ವರ್ಗದ ಪ್ರವೇಶ ಪರಿವರ್ತಕವು ಈ ವಿಧಾನದ ಘೋಷಣೆಗಾಗಿ ಪೋಷಕ ವರ್ಗದಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದಕ್ಕಿಂತ ಕಡಿಮೆಯಿರಬೇಕು. ಆದ್ದರಿಂದ, ಎರಡೂ ಮಕ್ಕಳ ವರ್ಗಗಳು ಪರಿಚಯ ವಿಧಾನವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಸಾರ್ವಜನಿಕ ಪ್ರವೇಶ ಮಾರ್ಪಾಡುಗಳನ್ನು ಬಳಸುತ್ತವೆ.
- ಖಾಸಗಿ ಪ್ರವೇಶ ಪರಿವರ್ತಕದೊಂದಿಗೆ ಕಾರ್ಯವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಪ್ರಯತ್ನಿಸಿ, ಅದು ದೋಷವನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ.
ಗಮನಿಸಿ: ಅಮೂರ್ತ ವರ್ಗವು ಯಾವುದೇ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ವಿಧಾನವನ್ನು ಹೊಂದಿಲ್ಲ. ಆದ್ದರಿಂದ, ನಾವು ಅಮೂರ್ತ ವರ್ಗದ ಉದಾಹರಣೆಯನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.