toString&&equals方法
先来看看这个题该怎样做?
分析:
1.java里的三大特性,有封装,继承,多态(方法的重载),super,this等关键字
2.常用的方法,equals方法,toString方法
3. double向字符串类型转换。
代码:
import java.util.*;
class GeometricObject
{
protected String color ;
protected double weight;
protected GeometricObject() {
color="red";
weight=1.0;
}
protected GeometricObject(String color, double weight) {
this.color = color;
this.weight = weight;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
}
class Circle1 extends GeometricObject
{
private double radius;
public Circle1() {
super("res",1.0);
radius=1.0;
}
public Circle1(double radius) {
super("res",1.0);
this.radius = radius;
}
public Circle1(String color, double weight,double radius) {
super(color, weight);
this.radius=radius;
}
//getter setter字段
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
//计算圆的面积
public double findArea()
{
return Math.PI*radius*radius;
}
//布尔方法
public boolean equals(Circle1 c)
{
if(c.radius==this.radius)
return true;
else
return false;
}
public String toString()
{
System.out.println("圆的半径为:"+radius);
return String.valueOf(radius);
}
}
public class TestCicle {
public static void main(String[] args)
{
Circle1 c1=new Circle1("red",1.0,2.0);
Circle1 c2=new Circle1("red",1.0,2.0);
if(c1.color==c2.color)
{
System.out.println("颜色相同");
}
else
{
System.out.println("颜色不相同");
}
if(c1.equals(c1)==c2.equals(c2))
{
System.out.println("半径相同");
}
else
{
System.out.println("半径不相同");
}
System.out.println(c1.equals(c2));
c1.toString();
}
}
运行结果:
颜色相同
半径相同
true
圆的半径为:2.0
其中equals方法时用来比较当前对象的类容是否与参数指点的字符串的内容相同。
本题中比较c1和c2两个对象的半径是否相同。
String s1=new String("hello");
String s2=new String("hello");
s1.equals(s2);
结果是: true ,s1和s2的内容都是hello
注意:比较字符串是不能用"==" ,当用"==",实际是判断两个字符串是否为同一个对象,即使类容相同,但它们是不同的对象
s1==s2 ,这样比较是错误的。
需要说明的是本题中
public String toString()
{
System.out.println("圆的半径为:"+radius);
return String.valueOf(radius);
}
定义的是一个字符串方法,则返回值必须String类型的。其中radius是double类型的,需要将double类型的radius转换为String类型 ,方法有多种 String.valueOf(radius);这是其中的一种方法
还可以有其他的方法。
希望这篇小小的博客对大家有帮助,如果帖子中有错误之处还希望大家批评,指点。