printable接口
时间: 2023-11-29 10:21:32 浏览: 69
printable是一个Python内置的标准接口,它定义了对象如何转换为可打印的字符串形式。如果一个对象实现了printable接口,那么它可以被print函数直接输出,也可以被str和repr函数调用。这个接口包含一个方法__str__(),它返回一个字符串,表示对象的可打印形式。通常情况下,__str__()返回的字符串应该是人类可读的,而且应该包含对象的关键信息。如果对象没有实现__str__()方法,Python会尝试调用__repr__()方法来获取对象的字符串表示形式。__repr__()方法返回的字符串应该是程序可读的,以便于调试和重现代码。
简单来说,如果你想让自己定义的类支持print函数输出,可以在类中实现__str__()方法。这样当你调用print(obj)时,就会输出obj.__str__()的返回值。如果__str__()方法没有被定义,Python会尝试调用__repr__()方法,如果也没有定义,Python会输出一个默认的字符串表示形式。
相关问题
用JAVA实现,改写矩形类,使之实现Printable接口,用printItMyWay()方法将矩形的相关信息(长、宽、周长、面积)打印在屏幕上;改写正方形类,重载 printItMyWay()方法将正方形的相关信息(边长、周长、面积)打印在屏幕上。
矩形类实现Printable接口:
```java
public class Rectangle implements Printable {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getPerimeter() {
return 2 * (length + width);
}
public double getArea() {
return length * width;
}
@Override
public void printItMyWay() {
System.out.println("矩形长为:" + length);
System.out.println("矩形宽为:" + width);
System.out.println("矩形周长为:" + getPerimeter());
System.out.println("矩形面积为:" + getArea());
}
}
```
正方形类重载printItMyWay()方法:
```java
public class Square extends Rectangle {
public Square(double side) {
super(side, side);
}
public double getSide() {
return getLength();
}
public void setSide(double side) {
setLength(side);
setWidth(side);
}
@Override
public void printItMyWay() {
System.out.println("正方形边长为:" + getSide());
System.out.println("正方形周长为:" + getPerimeter());
System.out.println("正方形面积为:" + getArea());
}
}
```
使用:
```java
public static void main(String[] args) {
Rectangle rectangle = new Rectangle(3, 4);
rectangle.printItMyWay();
Square square = new Square(5);
square.printItMyWay();
}
```
输出:
```
矩形长为:3.0
矩形宽为:4.0
矩形周长为:14.0
矩形面积为:12.0
正方形边长为:5.0
正方形周长为:20.0
正方形面积为:25.0
```
用JAVA实现在Printable 接口中增加一个新的printItMyWay(char)方法,这个方法有一个字符型的形参,返回值为孔。其功能是利用给出的字符打印,例如如果给定字符为*,一个长为4,宽为3的矩形的屏幕打印结果为
****
****
****
Java代码如下:
```
import java.awt.*;
import java.awt.print.*;
public class MyPrintable implements Printable {
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D)graphics;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
// 调用自定义的printItMyWay方法,字符为*
printItMyWay(g2d, "*", 4, 3);
return PAGE_EXISTS;
}
// 自定义的printItMyWay方法
public void printItMyWay(Graphics2D g2d, String c, int width, int height) {
Font font = new Font("Serif", Font.PLAIN, 36);
g2d.setFont(font);
FontMetrics fm = g2d.getFontMetrics();
int charWidth = fm.charWidth(c.charAt(0));
int charHeight = fm.getAscent();
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
g2d.drawString(c, j * charWidth, i * charHeight);
}
}
}
}
```
阅读全文