class TianTi {
private double tiji;
private double zhiliang;
public TianTi(){}
public TianTi(double tiji,double zhiliang){
this.tiji=tiji;
this.zhiliang=zhiliang;
}
public void setTiji(double tiji) {
this.tiji=tiji;
}
public double getTiji() {
return tiji;
}
public void setZhiliang(double zhiliang) {
this.zhiliang=zhiliang;
}
public double getZhiliang() {
return zhiliang;
}
public void Xuanzhuan(){
System.out.println("天体在旋转");
}
public String toString(){
return "质量:"+zhiliang+",体积:"+tiji;
}
}
class Planet extends TianTi
{
private String name;
public void Planet(){}
public void Planet(String name,double zhiliang, double tiji){
this.name=name;
this.zhiliang=zhiliang;
this.tiji=tiji;
}
public void setName(String name) {
this.name=name;
}
public String getName() {
return name;
}
public void Xuanzhuan(){
if (name=="地球")
{
System.out.println("地球在旋转");
}else{
System.out.println("天体在旋转");
}
}
public String toString(){
return "名字:"+name+"质量:"+zhiliang+",体积:"+tiji;
}
}
public class TestPlanet{
public static void main(String[] args) {
Planet Earth = new Planet("地球",1.0,1.0);
System.out.println(Earth);
Earth.Xuanzhuan();
Planet Huoxing = new Planet();
Huoxing.setName("火星");
Huoxing.setTiji(2.0);
Huoxing.setZhiliang(2.0);
System.out.println(Huoxing);
Huoxing.Xuanzhuan();
}
http://ask.csdn.net/questions/25346
私有变量当然是通过set/get方法方法。参考这个:http://blog.csdn.net/qq_19558705/article/details/49947317
如果用eclipse,建议用shift + alt + s 选择带有get/set字样的一列去自动生成,自己写很容易出错。
你的构造方法有问题,public void Planet(){}
public void Planet(String name,double zhiliang, double tiji){
this.name=name;
this.zhiliang=zhiliang;
this.tiji=tiji;
}
这一段,首先,构造方法没有返回值,还有构造方法里不能直接使用父类的私有变量,应改为
public Planet(){}
public Planet(String name,double zhiliang, double tiji){
super(tiji , zhiliang );
this. name= name;
}
在 TianTi类中,
public String toString(){
return "质量:"+zhiliang+",体积:"+tiji;
}应该改为:
public String toString(){
return "质量:"+getZhiliang()+",体积:"+getTiji();
}
在Planet类不能直接访问父类的私有成员,
public String toString(){
return "名字:"+name+"质量:"+zhiliang+",体积:"+tiji;
} 应该改为:
public String toString(){
return "名字:"+this.getName()+"质量:"+this.getZhiliang()+",体积:"+this.getTiji();
}
一般来说私有属性不能被子类,或者其他对象访问的,除非给这些这些属性提供访问方法如setter/getter等,或者其他可以访问这些私有属性的方法。