php子类可以继承和访问父类的私有属性和方法吗

php子类可以继承和访问父类的私有属性和方法吗,第1张

你这样理解也可以,当父类有私有的方法属性子类是继承不到的,所以子类不能访问父类的私有方法和属性。java
特性,private:类中只要限定为private的成员,只能被这个类本身访问

对于有继承关系的类,子类可以通过这个关键字调用父类中的方法。
比如:superquery();
此句话的意思是调用父类中的非私有方法query。
一般的用super关键字,调用类中的父类中重载构造方法。
比如:父类有个构造方法public A(){},同时又写了一个重载的构造方法public A(String name);那么,在子类中可以使用super(name)指明调用父类的哪个构造方法进行实例化父类对象。
大概就是这样的!

a的类型是A当然能调用自己的方法。之所以没有调用B的m1是因为A中m1是private的B并没有继承这个方法。如果你A中的方法m1是public修饰的,那么B就是重写了m1这个方法,调用是就调用B中的m1方法。但是A中m1是private修饰的,B中这个m1不属于重写A中的m1。而a的类型是A类型,所以调用A中的m1方法。

最近学习继承,从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象。所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子类对象确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用。就像有些东西你可能拥有,但是你并不能使用。所以子类对象是绝对大于父类对象的,所谓的子类对象只能继承父类非私有的属性及方法的说法是错误的。可以继承,只是无法访问到而已。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13386867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存