java - 如果抽象类无法实例化,为什么可以出现以下情况?

标签 java abstract-class

在以下代码中,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/

相关文章:

java - 如何将对象从asynctask返回到android中的主类

c++ - 您是否需要从所有派生类调用虚拟基类构造函数?即使它们不是最衍生的?

c++ - 在 C++ 中安全地传递对抽象类的引用

java - 使用模板模式设计通用流程

python - 抽象方法未定义

python - 字符串的 ABC?

java - 当列表中不存在 X 时,从列表中查找大于 X 的值

java - 简单的猜谜游戏错误

java - 如何在 Log4j2 中将 appender 添加到 Logger

java - 确定 Indian Rummy 手牌是否获胜 - Java