说明
Java的链式调用方式我们经常遇到,这种调用的好处是可以将调用的对象的多个函数串行起来执行,代码简洁。每次调用函数都要返回对象本身。
示例
一个简单的链式调用
定义一个类,提供链式调用的实现:
package com.thb;
public class Point {
private int x;
private int y;
public Point x(int x) {
this.x = x;
return this;
}
public Point y(int y) {
this.y = y;
return this;
}
@Override
public String toString() {
return "x = " + this.x + ", y = " + this.y;
}
}
再定义一个主类:
package com.thb;
public class Test2 {
public static void main(String[] args) {
Point point = new Point();
point.x(1).y(2);
System.out.println(point.toString());
}
}
运行输出:
x = 1, y = 2
涉及父类、子类的链式调用
定义一个抽象类:
package com.thb;
public abstract class Graphic {
double length;
double height;
public Graphic() {
}
public Graphic setLength(double length) {
this.length = length;
return this;
}
public Graphic setHeight(double height) {
this.height = height;
return this;
}
public abstract double area();
}
定义一个子类:
package com.thb;
public class Rectangle extends Graphic {
public Rectangle() {
}
@Override
public double area() {
return this.height * this.length;
}
}
定义另外一个子类:
package com.thb;
public class Triangle extends Graphic {
public Triangle() {
}
@Override
public double area() {
return (this.length * this.height) / 2.0;
}
}
定义一个主类:
package com.thb;
public class Test2 {
public static void main(String[] args) {
Rectangle rec = new Rectangle();
rec.setHeight(1.0).setLength(2.0);
System.out.println("rectangle area: " + rec.area());
Triangle tri = new Triangle();
tri.setHeight(1.0).setLength(2.0);
System.out.println("triangle area: " + tri.area());
}
}
运行输出:
rectangle area: 2.0
triangle area: 1.0