什么是java中的类实现?

时间:2014-04-10 12:09:05

标签: java abstract-class

我第一次尝试使用java.awt.Graphics并遇到了很多困惑。

Graphics gp = new Graphics();

并且编译器抛出一个错误,指出无法实例化抽象类。 我查看了oracle java文档,然后尝试了以下内容:

import java.awt.Graphics;
public abstract class GUI extends Graphics{

public void painter(){
GUI gp = new GUI();
gp.drawString("Hello People!",2,10);
} 
}

仍然显示相同的错误:GUI是抽象的;无法实例化

我对抽象类和实现一无所知。但是,我设法在Oracle的文档中获得了一些知识。但我仍然困惑,请有人帮助我。非常感谢你!!!!

我也尝试在java.awt.Graphics()中删除abstract scope of GUI, but the compiler again threw another error saying: GUI does not override the abstract method dispose();`;

7 个答案:

答案 0 :(得分:0)

抽象类是一个无法实例化的类。它的唯一目的是扩展其他类。

  

抽象类是一个被声明为abstract的类 - 它可能也可能是   不包括抽象方法。抽象类无法实例化,   但它们可以被分类。

     

抽象方法是一种没有声明的方法   实现(没有大括号,后跟分号),就像   这样:

     

abstract void moveTo(double deltaX,double deltaY);如果是一个班级   包括抽象方法,然后必须声明类本身   摘要,如:

public abstract class GraphicObject {    
   // declare fields    
   //declare nonabstract methods
     abstract void draw(); }

抽象类的主要目的是在子类中使用公共代码,但抽象类不应该有自己的实例。

您可以在此处详细了解:Abstract Methods and Classes

答案 1 :(得分:0)

最好的方法是使用Graphics2D并使用Graphics进行转换。

答案 2 :(得分:0)

抽象类是一个通知要做什么的类,它具有可以由其子类使用的普通方法的实现。
例如,您可以将类Vehicle定义为抽象,以定义其他车辆类的行为。其他类需要扩展此Vehical类并提供抽象方法的实现。

您无法创建Abstract类的对象,因为您需要使用抽象类来扩展其他类,然后您可以创建子类的对象。 更多参考here

答案 3 :(得分:0)

您不想重新实现整个图形堆栈;不要重新实现图形。相反,你需要从某个地方获取图形上下文;这通常由AWT工具包处理,您只需覆盖组件中的void paint(Graphics g)。另见:http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#getGraphics()

答案 4 :(得分:0)

创建JComponent的子类,而不是Graphics。然后将Graphics的实例传递给paintComponent方法:

class GUI extends JComponent {
    public void paintComponent(Graphics g) {
        super.paintComponent(g);       

        g.drawString("Hello People!", 2, 10);
    }  
}

如果您尝试自己创建Graphics或子类的实例,那么它们将无法使用它。

答案 5 :(得分:-1)

删除abstract

import java.awt.Graphics;
public class GUI extends Graphics{

 public void painter(){
 GUI gp = new GUI();
 gp.drawString("Hello People!",2,10);
 } 
}

答案 6 :(得分:-1)

这是因为您必须创建一个扩展GUI的类或使用已定义的类,该类也扩展GUI

此外,您可以删除abstract关键字,以使用您拥有的关键字。