在以下代码中,Graphics 对象被传递到以下paintComponent 方法中,然后该方法被转换为Graphics2D 对象。 Graphics 不是一个抽象类吗?为什么可以出现以下情况?
public void paintComponent(Graphics comp) {
Graphics2D comp2D = (Graphics2D) comp;
Font font = new Font("Comic Sans", Font.BOLD, 15);
comp2D.setFont(font);
comp2D.drawString("Potrzebie!", 5, 50);
}
最佳答案
仅仅因为类无法实例化并不意味着您无法获取它的实例。
在您的示例中,您所做的就是将其转换为 Graphics 层次结构中的不同类。
这是一个例子。
public class AbstractDemo {
public static void main(String[] args) {
Concrete c = new Concrete();
AClass a = (AClass) c;
a.me();
}
}
abstract class AClass {
public void me() {
System.out.println("Abstract parent");
}
}
class Concrete extends AClass {
}
关于java - 如果抽象类无法实例化,为什么可以出现以下情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56894247/