子类调用父类函数

ljh1990221 2011-03-23 10:16:27
class circle
{
float r;
public circle()
{this.r=1;}
public circle(float r)
{this.r=r;}

float girth()// 周长
{return 3.14f*r*2;}
float area()
{return 3.14f*r*r;}
}


class column extends circle
{
float high;
public column()
{high=2;}
public column(float h)
{high=h;}

float volume() //体积
{return high*area;} ////////请问这里为什么不可以
float barea() //表面积
{return (2*3.14f*r*r+3.14f*r*2*high);}
}
...全文
97 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsq_kaka1 2011-03-23
  • 打赏
  • 举报
回复
补充一下:当创建一个子类的对象实例的时候,必先调用父类的无参数的构造函数(默认构造函数),假如父类有带参数的构造函数,那么系统将不会给它创建无参数的构造函数,这时,子类在实例化的时候,因为找不到父类的默认构造函数,编译器将会报错,但如果在子类的构造函数中指定用父类的带参数的构造函数的时候,或者在父类中加一个无参数的构造函数,就不会报错。
希望对楼上有帮助...
zsq_kaka1 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ljh1990221 的回复:]


import java.util.*;
import javax.swing.*;
class circle
{
public double r;
[/Quote]
有继承时的构造方法要遵循:如果在子类的构造方法中没有明确调用父类的构造方法,则系统在执行子类的构造方法时会自动调用父类默认的构造方法(即无参的构造方法)。
5楼得程序没有明确调用父类的构造方法,所以系统自动调用父类无参的构造方法,但父类并没有定义无参的构造方法,所以会报错,改正办法可以在父类中增加一个无参的构造方法:

public circle(){
this.r=1;// 这里可以自己设置
}
zsq_kaka1 2011-03-23
  • 打赏
  • 举报
回复
楼上正解,

float volume() {
return high*area();//area是一个方法
}
ljh1990221 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huangjinjin520 的回复:]
float volume() // 体积
{
return high * area();
} // //////请问这里为什么不可以
要在erea中加上括号
[/Quote]

import java.util.*;
import javax.swing.*;
class circle
{
public double r;
public circle(double r)
{
this.r=r;
}
public double getarea(){
return ((Math.PI)*r*r);
}
public double getperimeter(){
return (2*(Math.PI)*r);
}
public void setr(double R){
r=R;
}
public double getr(){
return r;
}
}
class yuanzhui extends circle
{
double h;

public yuanzhui(double h)
{this.h=h;} ///////为什么这里会有问题

public double gettiji(){
return (1/3*getarea()*h);
}
public double geth(){
return h;
}
public void seth(double H){
h=H;
}

}
class yuanzhu extends circle
{
double h;
public yuanzhu(double h)
{
this.h=h; ///////为什么这里会有问题
}
public double gettiji(){
return (getarea()*h);
}
public double geth(){
return h;
}
public void seth(double H){
h=H;
}

}

public class test{
public static void main(String args[])
{
yuanzhu yzu;
yzu=new yuanzhu(3.0);
yuanzhui yzui;
yzui=new yuanzhui(4.0);
System.out.print(yzu.gettiji());

System.out.print(yzui.gettiji());
}

}
xiaoxiongzhuzhu 2011-03-23
  • 打赏
  • 举报
回复
貌似不用我回答了,观望
ljh1990221 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huangjinjin520 的回复:]
float volume() // 体积
{
return high * area();
} // //////请问这里为什么不可以
要在erea中加上括号
[/Quote]
哎,谢了
BUG弄潮儿 2011-03-23
  • 打赏
  • 举报
回复
float volume() // 体积
{
return high * area();
} // //////请问这里为什么不可以
要在erea中加上括号
zlyzm520 2011-03-23
  • 打赏
  • 举报
回复
area()

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧