[英]How to use classes and methods in Java
我对Java和编码还很陌生,但是到Java材料为止,我还没有遇到任何问题。 我真正无法确定的是类和方法的实际工作方式。 在过去的几个小时中,我一直在尝试实施此方法,但无济于事:
实现下面的UML中显示的名为Cylinder的类。 构造函数接受并初始化Cylinder的半径和高度,而访问 器和mutator则允许在构造对象之后对其进行更改。 该类还包括计算并返回圆柱体的体积和表面积的方法。 最后,它包含一个toString方法,该方法返回形状的名称,其半径和高度。 创建一个实例化4个Cylinder对象(任何参数)的main方法,使用toString()
显示它们,在每个对象中更改一个参数(您的选择),然后再次显示它们。
UML:
这是我目前拥有的代码:
class Cylinder {
private double radius;
private double height;
// Method #1
private void rad (){
}
// Constructor
public Cylinder (double radius, double height){
this.radius = radius;
this.height = height;
}
// Method #2 for calculating volume.
double calcVolume (){
double volume = Math.PI * Math.pow(radius, 2) * height;
return volume;
}
// Method #3 for calculating surface area.
double calcArea (){
double area = (2 * Math.PI * radius * height) + (2 * Math.PI * Math.pow(radius, 2));
return area;
}
// toString method.
public String toString (){
StringBuilder sb = new Stringbuilder();
sb.append(radius).append(height);
return sb.toString();
}
}
公共课Murray_A03Q1 {
public static void main(String[] args) {
Cylinder cylinder1 = new Cylinder(5, "can");
System.out.println(cylinder1);
Cylinder cylinder2 = new Cylinder(6, "cup");
Cylinder cylinder3 = new Cylinder(7, "jar");
Cylinder cylinder4 = new Cylinder(8, "paper roll");
}
}
我真正不了解的是如何使用“ get”和“ set”方法。 另外,我不确定如何实现toString方法。
我无法弄清楚如何纠正以下错误:
对于以下对象,未定义构造函数Cylinder()
-Cylinder cylinder1 = new Cylinder();
Stringbuilder无法解析为sb = new Stringbuilder();
的类型sb = new Stringbuilder();
谢谢您的帮助!
我真正不了解的是如何使用“ get”和“ set”方法。
获取器和设置器的目的是用于封装。 它们允许您获取或设置类变量的值,而不必将其声明为公共变量。
例如,如果您要
public double radius;
public double height;
您将能够以以下身份访问它们
cylinder1.radius = 1;
cylinder2.height = 10;
int a = cylinder3.radius;
int b = cylinder3.height + cylinder4.radius;
等等
现在如果相反
private double radius;
private double height;
上面的代码将失败。 这就是为什么我们需要吸气剂和吸气剂。 顾名思义,getter“获取”变量。
public double getHeight() {
return height;
}
当设置员“设置”变量时。
public void setHeight(double height) {
this.height = height;
}
至于为什么我们要这样做, 有很多信息。
另外,我不确定如何实现toString方法。
至于如何实现toString()
方法,它要做的就是返回String
。 但是对于String
包含的内容,没有硬性规定。 一个好的开始就是像您一样返回半径和高度。
对于以下对象,未定义构造函数Cylinder()-Cylinder cylinder1 = new Cylinder();
您的构造函数是public Cylinder (double radius, double height)
。 但是,您正在尝试使圆柱体为int
和String
。
Cylinder cylinder1 = new Cylinder(5, "can");
要么
public Cylinder(double radius, String name);
要么 用两个双精度半径和高度实例化圆柱体。 例如
Cylinder cylinder1 = new Cylinder(1.0, 2.0);
Stringbuilder无法解析为-StringBuilder sb = new Stringbuilder();的类型。
唯一的问题是您忘记了b
大写。 它是StringBuilder
而不是Stringbuilder
。
get
和set
方法的示例:
double getRadius() {
return radius;
}
void setRadius(r) {
radius = r;
}
对于以下对象,未定义构造函数Cylinder()-Cylinder cylinder1 = new Cylinder();
正在尝试调用默认构造函数(无参数的构造函数)。 您可以确切地找到此错误的调用位置,或者添加默认的构造函数:
Cylinder() {
this.radius = 0;
this.height = 0;
}
Stringbuilder无法解析为-StringBuilder sb = new Stringbuilder();的类型。
StringBuilder
实际上是java.lang.StringBuilder
类。 将此文本放在文件顶部以帮助其解析名称。
import java.lang.StringBuilder;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.