最近在学习php的过程中发现它其实比java的语言要松散很多,而且很多人说上手比较容易,但是智言我个人并不是很认同这样的观点,因为其实java的整个语法规则都非常的有条有理,虽然函数很多,但是至少经常用到的也就是那么一些,而在php中虽然函数比不上java,但是整个php的语法感觉比java要松散而混乱,所以相比来说,我认为java比php要好学一些。当然,这也有可能是我先学习了java然后再去学php的原因。
首先说说php中的三大特征,三大特征和java中是一样的,分为封装、继承、多态,同样还有另外一个学习点,就比如覆盖和重写。
覆盖和重写和java中是一样的,我这里就不多讲。
那么先讲讲封装
封装
php中的封装可以说也是和java中的封装是差不多的,只是,在php中又另外提供了一个魔术函数 __set 和 __get方法,而设计者本身也不推荐使用,我个人也还是喜欢像java中的封装,毕竟已经非常熟练了。
private $name;
private $age;
public function setName($name){
$this->name = $name;
}
public function getName(){
return $this->name;
}
public function setAge($age){
$this->age = $age;
}
public function getAge(){
return $this->age;
}
?>
然后大家就可以通过提供的公共方法来调用和赋值了。
而魔术函数 __set 和 __get方法由于创建者都不推荐,所以这里就不多说,有兴趣的朋友可以在百度里进行自行搜索,谢谢。
继承
对于继承而言其实和java中的也是差不多的。
如下:
class A{
public function method(){
echo '我是方法A';
}
}
class B extends A{
public function methodTwo(){
echo '我是方法B';
}
}
$b = new B();
$b->method();
$b->methodTwo();
?>
继承需要注意几点:
子类最多只能继承一个父类(指直接继承);
子类可以继承其父类(或者超类)的public、protected修饰的变量(属性)和函数(方法);
在创建某个子类对象时,默认情况下会自动调用其父类的构造函数。
如果在子类中需要访问其父类的方法(构造方法/成员方法 方法的访问修饰符是public/protected),可以使用父类::方法名(或者parent::方法名)来完成。
如果子类(派生类)中的方法和父类(基类)方法相同,我们称为方法重写/方法覆盖。
当然了,因为目前更新版本的问题,我所学的版本是5.3的版本,所以在最新的版本中智言还没有去研究,所以还会继续去看看研究的。
多态
至于多态,那就基本上和java中是不一样的啦,因为在java中,多态是这样写的。
class ZhiYan{
void method(){
System.out.println("我是方法一");
}
void method(int a){
System.out.println("我是方法二");
}
void method(int a,int b){
System.out.println("我是方法三");
}
}
ZhiYan zhiyan = new ZhiYan();
zhiyan.method();
zhiyan.method(5);
那么在java中会根据你传递的参数在自动选择需要匹配的方法,而在php中是不支持这样的方法,不知道php7中会不会有所改动…
php中依然要用到魔术方法 __call ,那么是这样写的:
class Reload{
public function test1($a){
echo "test1..";
}
public function test2($a,$b){
echo "text2---".$a.$b;
}
//这里提供一个魔术函数 __call
public function __call($method,$a){
if($method=="test"){
if(count($a)==1){
$this->test1($a);
}else if(count($a)==2){
$this->test2($a);
}
}else{
echo '没有匹配到你需要的方法';
}
}
}
$load = new Reload();
$load->test(1);
?>
所以在学习php过程中,如果你没有编程基础,我想会更容易上手吧,至少不会混乱,而如果学习过其他语言,你的优势更多的将是你上手会很快,而你学到后面,有时候总结不到位,会学的混乱一些。
如果觉得《php对象的三大特征 关于php中面向对象的三大特征(封装/继承/多态)》对你有帮助,请点赞、收藏,并留下你的观点哦!