java中构造方法set/get和tostring的使用详解
时间: 2023-05-04 10:02:11 浏览: 208
Java中,构造方法(Constructor)是一种特殊类型的方法,它用于创建并初始化对象。set/get方法用于设置/获取对象的属性值,而toString方法用于将对象转换为字符串表示形式。
在Java中,构造方法有两种类型:默认构造方法和有参构造方法。默认构造方法没有参数和实现,它会使用默认值初始化成员变量。而有参构造方法需要传入参数,并根据参数对成员变量进行初始化。使用构造方法能够让对象在创建时就获得一个指定的状态,方便后续的操作。
set/get方法用于获取和设置对象的属性值。它们是一对方法,set方法用于设置属性值,get方法用于获取属性值。在Java中,通常使用set/get方法来保护成员变量,在不能直接访问成员变量的情况下,通过set/get方法来实现对成员变量的操作。
toString方法用于将对象转换为字符串表示形式,通常重写Object类中的toString方法。它可以返回对象的文本描述,便于在调试过程中查看对象的状态。在实际开发中,toString方法还可以用于打印日志信息、输出调试信息等。
总之,在Java中,构造方法、set/get方法、toString方法都是非常重要的方法,使用它们能够方便地创建对象,管理属性值和调试代码。
相关问题
5. 创建一个Shape类(形状),属性int x(x坐标), int y(y坐标),定义有参无参,set/get/toString方法 创建一个Square类(方形)继承Shape类,定义有参无参,set/get/toString方法 创建一个Triangle类(三角形)继承Shape类,定义有参无参,set/get/toString方法 在main方法中创建4个Square对象,将四个点连起来是一个正方形,输出这4个点 在main方法中创建3个Triangle对象,将三个点连起来是一个等腰三角形,输出这个3个点
好的,我知道了。以下是代码实现:
```java
// Shape类
public class Shape {
private int x;
private int y;
public Shape() {
}
public Shape(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
@Override
public String toString() {
return "(" + x + ", " + y + ")";
}
}
// Square类
public class Square extends Shape {
public Square() {
}
public Square(int x, int y) {
super(x, y);
}
@Override
public String toString() {
return "Square{" +
"x1=" + getX() +
", y1=" + getY() +
", x2=" + (getX() + 1) +
", y2=" + getY() +
", x3=" + (getX() + 1) +
", y3=" + (getY() + 1) +
", x4=" + getX() +
", y4=" + (getY() + 1) +
'}';
}
}
// Triangle类
public class Triangle extends Shape {
public Triangle() {
}
public Triangle(int x, int y) {
super(x, y);
}
@Override
public String toString() {
return "Triangle{" +
"x1=" + getX() +
", y1=" + getY() +
", x2=" + (getX() + 1) +
", y2=" + getY() +
", x3=" + getX() +
", y3=" + (getY() + 1) +
'}';
}
}
// main方法
public static void main(String[] args) {
// 创建4个Square对象
Square square1 = new Square(0, 0);
Square square2 = new Square(1, 0);
Square square3 = new Square(1, 1);
Square square4 = new Square(0, 1);
// 输出这4个点
System.out.println(square1);
System.out.println(square2);
System.out.println(square3);
System.out.println(square4);
// 创建3个Triangle对象
Triangle triangle1 = new Triangle(0, 0);
Triangle triangle2 = new Triangle(1, 0);
Triangle triangle3 = new Triangle(0, 1);
// 输出这3个点
System.out.println(triangle1);
System.out.println(triangle2);
System.out.println(triangle3);
}
```
输出结果如下:
```
Square{x1=0, y1=0, x2=1, y2=0, x3=1, y3=1, x4=0, y4=1}
Square{x1=1, y1=0, x2=2, y2=0, x3=2, y3=1, x4=1, y4=1}
Square{x1=1, y1=1, x2=2, y2=1, x3=2, y3=2, x4=1, y4=2}
Square{x1=0, y1=1, x2=1, y2=1, x3=1, y3=2, x4=0, y4=2}
Triangle{x1=0, y1=0, x2=1, y2=0, x3=0, y3=1}
Triangle{x1=1, y1=0, x2=2, y2=0, x3=1, y3=1}
Triangle{x1=0, y1=1, x2=1, y2=1, x3=0, y3=2}
```
加了@data没有set/get方法
@data注解是lombok库提供的,它可以自动生成Java类的构造方法、toString方法、equals方法、hashCode方法等。但是它并不会自动生成set/get方法,需要手动添加或者使用其他注解来生成。
如果需要自动生成set/get方法,可以使用@Accessors注解,它可以控制生成的set/get方法的访问级别和命名风格。例如:
@Data
@Accessors(chain = true)
public class User {
private String name;
private int age;
}
这样就可以自动生成链式调用的set方法和普通的get方法。