java中的面向对象-类和对象-类的构造方法

Seven的代码实验室 2012-03-06 04:28:29
我是一个java初学者我想请教一下下面这个程序应该怎么改才行?
public class Spere
{
double r,s,l;
Spere(double R)
{
r=R;
}
double countlength()
{
l=Math.PI*2*r;
return l;
}
double countarea()
{
s=Math.PI*r*r;
return s;
}
double setR(double h)
{
r=h;
return r;
}
public void main(String[]args)
{
Spere s1=new Spere();
Spere(3.0);

System.out.println("半径为3.0的圆周长为:"+countlength());
System.out.println("半径为3.0的圆面积为:"+countarea());

setR(5.0);

System.out.println("半径为5.0的圆周长为:"+countlength());
System.out.println("半径为5.0的圆面积为:"+countarea());
}
}
...全文
255 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZZZ5512536 2012-03-08
  • 打赏
  • 举报
回复
构造函数有错误啊…你想使用哪种方式构造对象,就必须有相应的构造函数。
而且记得最好都把默认的构造函数加上(即没有参赛的构造函数)
l2316623667 2012-03-08
  • 打赏
  • 举报
回复
Bank(String n,String a,String c,double b)
B=new Bank("张三","11000123","123456","5000.0");
创建Bank对象的时候参数“5000.0”应该与构造方法对应,所以要改成double类型的参数,“5000.0”是字符串.
  • 打赏
  • 举报
回复
谢谢各位楼主的解答!小弟受益匪浅啊!
superhill 2012-03-08
  • 打赏
  • 举报
回复
我运行了一下,发现你的构造方法出了错,也就是下面这两行

Spere s1 = new Spere();
Spere(3.0);


java的机制是,如果程序员没有为类定义一个构造方法,那么系统会自动为你添加一个无参的构造方法。但是因为你自己定义了带参数的构造方法,所以系统就不再帮你定义了,所以Spere s1 = new Spere();
是会出错的。

改进方法:Spere s1 = new Spere(3.0);
这样就行,希望对你有帮助
菖蒲老先生 2012-03-08
  • 打赏
  • 举报
回复
B=new Bank("张三","11000123","123456",5000.0);
creso 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 javachenzhenlin 的回复:]

大家帮忙看看这个程序应该怎样改才行?


public class Bank
{
String name;//户主姓名
String accountNumber;//账号
String cipher;//密码
double balance;//余额

Bank(String n,String a,String c,double b)
{
nam……
[/Quote]
Bank(String n,String a,String c,double b)
构造函数最后一个参数是double 型的
B=new Bank("张三","11000123","123456",5000.0);最后要把引号去掉因为有引号的是字符串
  • 打赏
  • 举报
回复
大家帮忙看看这个程序应该怎样改才行?


public class Bank
{
String name;//户主姓名
String accountNumber;//账号
String cipher;//密码
double balance;//余额

Bank(String n,String a,String c,double b)
{
name=n;
accountNumber=a;
cipher=c;
balance=b;
}
double deposit(double money)//存款方法
{
balance=balance+money;
return balance;//返回余额
}
double teller(double cash)//取款方法
{
balance=balance-cash;
return balance;
}
String changePassword(String newCipher)//修改密码方法
{
cipher=newCipher;
return cipher;
}
public static void main(String[]args)
{
Bank B;
B=new Bank("张三","11000123","123456","5000.0");//在这行出错了它提示“构造函数银行(字符串,字符串,字符串,字符串)是未定义的”我不明白什么意思求大家帮忙看看!
}
}
  • 打赏
  • 举报
回复
谢谢各位楼主!
jake512 2012-03-06
  • 打赏
  • 举报
回复
直接 Spere s1=new Spere(3.0);就可以了,因为你自己写了一个构造方法所以,原来默认隐藏的无参工造方法就没有了,所以直接要求传参,一般标准是,有一个无参构造方法,一个有全部的参数的工造方法
elva1176 2012-03-06
  • 打赏
  • 举报
回复
构造方法出错了
2楼+1.
五哥 2012-03-06
  • 打赏
  • 举报
回复

public class Spere
{
double r,s,l;
public Spere(double R)
{
r=R;
}
public double countlength()
{
l=Math.PI*2*r;
return l;
}
public double countarea()
{
s=Math.PI*r*r;
return s;
}
public double setR(double h)
{
r=h;
return r;
}
public static void main(String[]args) //这里写错 ,java的main应该是static的
{
Spere s1=new Spere(3.0);

System.out.println("半径为3.0的圆周长为:"+s1.countlength());//由于countlength未定义为static,所以需要加上s1
System.out.println("半径为3.0的圆面积为:"+s1.countarea());

s1.setR(5.0);//由于setR未定义为static,所以需要加上s1

System.out.println("半径为5.0的圆周长为:"+s1.countlength());
System.out.println("半径为5.0的圆面积为:"+s1.countarea());
}
}
a395885670 2012-03-06
  • 打赏
  • 举报
回复
Spere s1=new Spere();
Spere(3.0);

这里的问题,你想使用带参构造的话 必须先自己写出默认构造public Spere() {}。在Spere(double R)方法前面增加一个public Spere() {}就行了。
该课程由付强老师主讲,系统的、全面的、具体的讲解了java入门的知识。可以使初级的学员入门。Java入门Java的历史、Java的版本、Java的优势、软件行业前景Java开发环境搭建、编写Java入门练习虚拟机的运行机制、Java的平台无关性、虚拟机垃圾回收机制基础语法关键字、标识符、Java数据型分、基础数据型、取值范围变量、常量、三种注释、生成doc文档、运算符、表达式if语句、switch语句、嵌套判断for语句、while语句、do-while语句、嵌套循环和对象面向过程和面向对象的区别的构成、访问修饰符、对象的内存分配this关键字、按值传递与按引用传递、对象的初始化顺序高级特性的继承、父子的初始化顺序、单继承性方法的覆盖、重载、super关键字、多态、instanceof关键字、强制型转换、static关键字、final关键字数组和枚举一维数组的应用及内存分配多维数组的应用及内存分配数组的复制、数组的按引用传递排序算法:冒泡、直接选择、插入选择、希尔、快速、归并、堆排序Arrays工具的应用枚举型的应用常见的使用Object的底层及应用、ObjectsString的底层及应用、正则表达式StringBuffer和StringBuilder的底层及应用Math的应用、包装的应用日期的应用:Date、DateFormat、Calendar、LocalDateTime、Instant、LocalDate、MonthDay、ZonedDateTime、YearMonth、新旧日期转换BigInteger和BingDecimal、DecimalFormatSystem、Scanner抽象和接口抽象的规则及应用接口的规则及应用默认方法、静态方法、函数式接口、Lambda表达式异常异常的定义异常的处理:抓(try-catch-finally)、抛(throws)异常的分、自定义异常的应用、throw关键字集合框架集合框架结构:接口、实现Collection接口的方法、Set接口的方法、List接口的方法、Map接口的方法Array、Linked、Hash、Tree底层实现原理泛型的作用、Collections工具、历史集合I/O流Path的原理及应用、Files的原理及应用文件字节流FileInputStream的原理及应用对象、缓冲流、数据流的原理及应用字符流的原理及应用多线程进程与线程的概念、查看线程对象Java内存模型线程的创建与启动:扩展Thread、实现Runnable接口、实现Callable接口、线程池线程状态的转换:新建、就绪、运行、阻塞、死亡线程的调度:sleep、yield、join、interrupt、wait后台线程、定时任务线程的并发与同步、同步锁、同步块、线程安全的Lock接口、CAS、volatile修饰符内部成员内部、本地内部的应用匿名内部的原理及引用、Lambda表达式设计模式基础设计模式概念、框架概念7大设计原则:开闭原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特原则、里氏替换原则、合成复用原则单例模式、工厂模式、模板模式、代理模式、装饰模式、适配器模式、外观模式、策略模式、观察者模式、命令模式、备忘录模式、观察者模式反射反射包Class的使用反射获取属性、方法、构造器通过反射创建对象/通过反射调用方法反射的应用

62,614

社区成员

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

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