本文目录一览:
- 1、3、 一个类的公共成员与私有成员有何区别
- 2、php,子类无法访问父类私有属性,子类实例化再赋值后,子类所添加的新成员属性不存在
- 3、PHP中private和public还有protected的区别
- 4、在PHP中,如何在类外部操作私有成员?
3、 一个类的公共成员与私有成员有何区别
公共成员与私有成员有何区别:
一、public(公共成员)
public,顾名思义,就是公开的数据信息,可以在程序中的任何位置(类内,类外),被其他类的对象调用,子类可以继承和使用父类中的公共成员。
二、private(私有成员)
被private关键字修饰的变量和方法,只能在所属类的内部被调用和修改,不可以在类外被访问,在子类中也不可以被访问。
相关概念:
PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己,例如java的面向对象编程。
该语言当初创建的主要目标是让开发人员快速编写出优质的web网站。PHP同时支持面向对象和面向过程的开发,使用上非常灵活。
经过二十多年的发展,随着php-cli相关组件的快速发展和完善,PHP已经可以应用在 TCP/UDP服务、高性能Web、WebSocket服务、物联网、实时通讯、游戏、微服务等非 Web 领域的系统研发。
以上内容参考:百度百科-php
php,子类无法访问父类私有属性,子类实例化再赋值后,子类所添加的新成员属性不存在
我把涉及到这个问题的知识点,可以和大家分享一下:
1.父类humanBeing , 子类student , 实例对象 $m (注意:$m是子类student 的实例,和humanBeijing没有直接关系)
2.private 的属性.仅在本类里使用;任何子类、实例对象都无法访问,更别说赋值。这个在书本上都一直是这么说滴。。哈哈。。。
根据以上知识点,来看你这个问题:
$student1=new student;
/*实例一个student的对象,此时注意,这个对象并不会继承父类humanBeing的三个 private变量$name,$age,$gender*/
$student1-name='zhangsan';
$student1-age=20;
$student1-gender='male';
/*这里需要注意.很多人会误以为是给父类humanBeing的三个属性赋值了,这是错的。这里的赋值,仅仅是给子类student的三个属性赋值,这里也许会有人问,子类student那有什么属性呀?在php中,所有的变量,不要求申明,在类中属性也是一样的,不要求申明,而且类中,默认都是public。所以上面的这三行代码,仅仅是子类student的三个属性赋值,和父类humanBeing的三个属性,没有任何关系,仅仅名字一样而已*/
function say(){
echo "My name is {$this-name} and I am {$this-age} years old. I am {$this-gender}.br /";
}
/*这个是父类humanBeing的公有方法,(默认的是public的),这个方法中 $this - name.这里的$this 是指父类student,$this - name是指父类student的属性,从始至终,它并没有被赋值,所以它是空的,(而且它也不能被赋值,因为是private),这里的$student1-name='zhangsan';赋值操作,仅仅是修改子类student的$name */
我想这么回答,你应该非常清楚了吧
再来理解后面的例子,就很容易了。
$m-name="zhangsan";
/*仅仅是给子类Man的属性赋值,而且因为可以省略声明,默认又是public的,所以能直接赋值,当然也可以输出了*/
class Person{
private $name;
}
/*可以直接把private $name;去掉,因为后面的赋值,跟它没有任何关系,直接修改成*/
class Person{
}
PHP中private和public还有protected的区别
1、private修饰词,表示成员是私有的,只有自身可以访问; 2、protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。
在PHP中,如何在类外部操作私有成员?
若想在类外部操作类的私有成员,请在类内部使用__get()和__set()两个方法:
class model{
function __set($name,$value){
$this-$name=$value;
}
function __get($name){
return $this-$name;
}
}
echo $aa-name;