子类从父类继承过来的方法可以操作子类自己定义的成员变量吗

如题所述

一楼回答的不错。如果我回答的话,这样说,
1.首先当子类继承了父类,因此子类(当继承方式为public或protected时)可以访问及改动父类的public成员,但访问或改不了私有成员和不可访问变量;
2.但父类没继承子类,所以父类没有权利访问(操作)子类的成员变量;

但是你的你想用父类的函数来访问(操作)子类成员的话,可以在子类再定义一个父类的同样一个函数,用虚函数;然后用父类指针指向子类对象,来解决你的问题。这个后面再学的学的知识,现在暂时可以认为“不能操作子类自己定义的成员变量”。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-15
你好,一楼回答的不错。如果我回答的话,这样说,
1.首先当子类继承了父类,因此子类(当继承方式为public或protected时)可以访问及改动父类的public成员,但访问或改不了私有成员和不可访问变量;
2.但父类没继承子类,所以父类没有权利访问(操作)子类的成员变量;

但是你的你想用父类的函数来访问(操作)子类成员的话,可以在子类再定义一个父类的同样一个函数,用虚函数;然后用父类指针指向子类对象,来解决你的问题。这个后面再学的学的知识,现在暂时可以认为“不能操作子类自己定义的成员变量”。本回答被提问者和网友采纳
第2个回答  2011-03-30
你这个问题其实问的不太专业,我猜应该是c++初学者吧。
如果按照你的意思的话,你就是重载了父类的该方法,这时是可以操作子类定义的变量的。
第3个回答  2011-03-31
.jackshow.parent;

public class Point {

private String x;
private String y;

/**
* 默认构造函数
*/
public Point(){

}

public String getX() {
return x;
}

public void setX(String x) {
this.x = x;
}

public String getY() {
return y;
}

public void setY(String y) {
this.y = y;
}
}

package net.jackshow.child;

import net.jackshow.parent.Point;

public class Point3D extends Point{

static int c=0;

public Point3D(){
super();
c++;
}

public static void main(String[] args){
Point3D child = new Point3D();
Point3D child1 = new Point3D();
System.out.println("x="+child.getX()+",y="+child.getY()+",c="+c);
}
}

第3,你在class前面加上abstract,接口则把class改为interface,然后变量全部改为public的
相似回答