属性,子类继承父类的方法了父类,但是只想要其中两个属性怎么办

子类继承父类private属性问题_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
子类继承父类private属性问题
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢PHP面向对象-子类扩展父类(子类重新载入父类)的示例代码分享-php教程-PHP中文网QQ群微信公众号还没有收藏PHP面向对象-子类扩展父类(子类重新载入父类)的示例代码分享  在中,会遇到这样的情况,子类父类,但是又需要对父类的进行一定的扩展,这时子类可以对属性和方法进行重写,覆盖与父类同名的属性和方法,但是如果父类的方法中的内容比较多,比如上百成千行代码,这时只需使用”父类类名::方法” 或“parent::方法“来调用父类中被覆盖的方法,有就是重新载入父类,然后再加上需要扩展的语句。 方法的重写&?php
class Person{
public function construct($name=&& ){
$this-&name=$
function say(){
echo &我叫&.$this-&
class Student extends Person{
public function construct($name=&&){
$this-&name =$
}//这里定义了一个和父类中同名的方法,将父类中的说话方法覆盖并重写
function say(){
echo &我叫&.$this-&name .&,今年25岁了& ;
}?&重写方法与访问权限  在子类覆盖父类的方法时要注意,在子类中重写的方法的访问权限一定不能低于父类被覆盖的方法的访问权限。例如父类中的方法的访问权限是protected,那么在子类中重写的方法的权限就要是protected或public。如果父类的方法是public权限,子类中要重写的方法只能是public。总之在子类中重写父类的方法时,一定要高于父类被覆盖的方法的权限。 重写时的参数数量  子类可以拥有与父类不同的参数数量,如下面的中,多添加了一个参数$age。&?phpclass Student extends Person{
public function construct($name=&&,$age=25){
$this-&name =$
$this-&age =$
function say(){
echo &我叫&.$this-&name .&,今年&.$this-&age.&岁了& ;
}?&  上面的例子,通过覆盖我们就实现了对“方法”扩展。   但是,像这样做虽然解决了我们上面说的问题,但是在实际开发中,一个方法不可能就一条代码或是几条代码,比如说“Person”类里面的“say()”方法有里面有100条代码,如果我们想对这个方法覆盖保留原有的功能外加上一点点功能,就要把原有的100条代码重写一次, 再加上扩展的几条代码,这还算是好的,而有的情况,父类中的方法是看不见原代码的,这个时候你怎么去重写原有的代码呢?我们也有解决的办法,就是在子类这个方法中可以调用到父类中被覆盖的方法, 也就是把被覆盖的方法原有的功能拿过来再加上自己的一点功能,可以通过两种方法实现在子类的方法中调用父类被覆盖的方法:  一种是使用父类的 “类名::” 来调用父类中被覆盖的方法;   一种是使用 “parent::” 的方试来调用父类中被覆盖的方法;   方法的扩展&?phpclass Student extends Person{
public function construct($name=&&,$age=25){
parent::construct($name,$age);
$this-&age =$
function say(){
parent::say();
echo &,今年&.$this-&age.&岁了& ;
}?&  上面所描述的只是重新加载了父类的属性和方法,不是真正意义上的,只能说是子类对父类进行了扩展,在php中,也存在重载(overloading)一词,但跟一般面向语言中的重载意义不同。以上就是PHP面向对象-子类扩展父类(子类重新载入父类)的示例代码分享的详细内容,更多请关注php中文网其它相关文章!共3篇764点赞收藏分享:.&猜你喜欢PHP中文网:独家原创,永久免费的在线,php技术学习阵地!
All Rights Reserved | 皖B2-QQ群:关注微信公众号3被浏览1331分享邀请回答2添加评论分享收藏感谢收起01 条评论分享收藏感谢收起安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&博客分类:
Java面试题之子类是否继承父类属性?
题目如下:
public class Super {
private int i = 10;
public void execute() {
System.out.println(i);
public static void main(String[] args) {
SubClassA subClass = new SubClassA();
Super superClass = subC
System.out.println("subClassA value:");
subClass.execute();
System.out.println("super value:");
superClass.execute();
SubClassB subClassB = new SubClassB();
superClass = subClassB;
System.out.println("subClassB value:");
subClassB.execute();
System.out.println("super value:");
superClass.execute();
class SubClassA extends Super {
private int i = 20;
class SubClassB extends Super {
private int i = 30;
public void execute() {
System.out.println(i);
问题:结果的输出是什么?
先不考虑结果我们先看下继承在Java里是个什么概念?
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
也就是说继承主要是为了功能次要是为了数据,那么我们分析上述答案
1.首先看实际执行的方法是哪个类的?
2.那么执行的方法所在类也就是this访问的变量自然就是哪个类的变量
subClassA value:
super value:
subClassB value:
super value:
super value:
如果修改private为public是否答案等同?必须等同
子类可以获取父类的属性吗?可以两种方式1.父类暴漏访问方法2.非private的直接super.*
这样的东西,在面试中,搞搞就行了。千万别在实际开发中,这样用开发中这样的东西很多
浏览: 528632 次
来自: 北京
不错!可以使用,已验证。
这和我去官网看有啥区别?
小网客 写道evanzzy 写道使用preparedState ...
evanzzy 写道使用preparedStatement进行 ...
使用preparedStatement进行数据库操作防注入这事 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 子类继承父类 的文章

 

随机推荐