Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要在Java中继承API的帮助吗_Java_Oop_Inheritance_Object Oriented Analysis - Fatal编程技术网

需要在Java中继承API的帮助吗

需要在Java中继承API的帮助吗,java,oop,inheritance,object-oriented-analysis,Java,Oop,Inheritance,Object Oriented Analysis,我有4门课是这样的: public abstract class AbstractGraphObject() { public abstract void draw(Graphics gr,int x,int y); } public class Line extends AbstractGraphObject() { public void draw(Graphics gr,int x,int y); } public class Rectan

我有4门课是这样的:

 public abstract class AbstractGraphObject()
 {

       public abstract void draw(Graphics gr,int x,int y);
 }

 public class Line extends AbstractGraphObject()
 {

       public void draw(Graphics gr,int x,int y);
 }

 public class Rectangle extends AbstractGraphObject()
 {

       public void draw(Graphics gr,int x,int y);

 }



 public class Circle extends AbstractGraphObject()
 {

     public void draw(Graphics gr,int x,int y);

 }
public interface GraphObjectModel()
{
   public abstract void draw(Graphics gr,int x,int y);
}
类行和矩形已经实现。我正在实施班级循环。然而,我发现了一个API来绘制一个椭圆

 public class Ellipse()
 {

     public void paint(Graphics gr,int x,int y);

 }
然而,我不能修改现有类Ellipse的代码,但仍然希望重用这个类,并按照上面的设计实现一个圆。我该怎么做?在这种情况下,如何使用OOP

PS:我必须重用这个椭圆API。请不要告诉我自己定义这个圆


高级感谢。

如果我正确理解您的需求:

 public class Circle extends AbstractGraphObject()
 {
   private Ellipse eclipse;
   public Circle(Ellipse eclipse){
      this.eclipse = eclipse;
   }

   public void draw(Graphics gr,int x,int y){
      eclipse.paint(gr,x,y);
   }
 }

如果我正确理解您的需求:

 public class Circle extends AbstractGraphObject()
 {
   private Ellipse eclipse;
   public Circle(Ellipse eclipse){
      this.eclipse = eclipse;
   }

   public void draw(Graphics gr,int x,int y){
      eclipse.paint(gr,x,y);
   }
 }

如果我正确理解您的需求:

 public class Circle extends AbstractGraphObject()
 {
   private Ellipse eclipse;
   public Circle(Ellipse eclipse){
      this.eclipse = eclipse;
   }

   public void draw(Graphics gr,int x,int y){
      eclipse.paint(gr,x,y);
   }
 }

如果我正确理解您的需求:

 public class Circle extends AbstractGraphObject()
 {
   private Ellipse eclipse;
   public Circle(Ellipse eclipse){
      this.eclipse = eclipse;
   }

   public void draw(Graphics gr,int x,int y){
      eclipse.paint(gr,x,y);
   }
 }

您可以将to接口改为abstract,以便使用相同的设计,因为Java不支持多重继承

所以可能是这样的:

 public abstract class AbstractGraphObject()
 {

       public abstract void draw(Graphics gr,int x,int y);
 }

 public class Line extends AbstractGraphObject()
 {

       public void draw(Graphics gr,int x,int y);
 }

 public class Rectangle extends AbstractGraphObject()
 {

       public void draw(Graphics gr,int x,int y);

 }



 public class Circle extends AbstractGraphObject()
 {

     public void draw(Graphics gr,int x,int y);

 }
public interface GraphObjectModel()
{
   public abstract void draw(Graphics gr,int x,int y);
}
然后,您的类可以使用
GraphObjectModel
eliple
API

public class Circle extends Ellipse implements GraphObjectModel
{
    @Override
    public void draw(Graphics gr,int x,int y){ }

    @Override
    public void paint(Graphics gr,int x,int y){}
}

您可以将to接口改为abstract,以便使用相同的设计,因为Java不支持多重继承

所以可能是这样的:

 public abstract class AbstractGraphObject()
 {

       public abstract void draw(Graphics gr,int x,int y);
 }

 public class Line extends AbstractGraphObject()
 {

       public void draw(Graphics gr,int x,int y);
 }

 public class Rectangle extends AbstractGraphObject()
 {

       public void draw(Graphics gr,int x,int y);

 }



 public class Circle extends AbstractGraphObject()
 {

     public void draw(Graphics gr,int x,int y);

 }
public interface GraphObjectModel()
{
   public abstract void draw(Graphics gr,int x,int y);
}
然后,您的类可以使用
GraphObjectModel
eliple
API

public class Circle extends Ellipse implements GraphObjectModel
{
    @Override
    public void draw(Graphics gr,int x,int y){ }

    @Override
    public void paint(Graphics gr,int x,int y){}
}

您可以将to接口改为abstract,以便使用相同的设计,因为Java不支持多重继承

所以可能是这样的:

 public abstract class AbstractGraphObject()
 {

       public abstract void draw(Graphics gr,int x,int y);
 }

 public class Line extends AbstractGraphObject()
 {

       public void draw(Graphics gr,int x,int y);
 }

 public class Rectangle extends AbstractGraphObject()
 {

       public void draw(Graphics gr,int x,int y);

 }



 public class Circle extends AbstractGraphObject()
 {

     public void draw(Graphics gr,int x,int y);

 }
public interface GraphObjectModel()
{
   public abstract void draw(Graphics gr,int x,int y);
}
然后,您的类可以使用
GraphObjectModel
eliple
API

public class Circle extends Ellipse implements GraphObjectModel
{
    @Override
    public void draw(Graphics gr,int x,int y){ }

    @Override
    public void paint(Graphics gr,int x,int y){}
}

您可以将to接口改为abstract,以便使用相同的设计,因为Java不支持多重继承

所以可能是这样的:

 public abstract class AbstractGraphObject()
 {

       public abstract void draw(Graphics gr,int x,int y);
 }

 public class Line extends AbstractGraphObject()
 {

       public void draw(Graphics gr,int x,int y);
 }

 public class Rectangle extends AbstractGraphObject()
 {

       public void draw(Graphics gr,int x,int y);

 }



 public class Circle extends AbstractGraphObject()
 {

     public void draw(Graphics gr,int x,int y);

 }
public interface GraphObjectModel()
{
   public abstract void draw(Graphics gr,int x,int y);
}
然后,您的类可以使用
GraphObjectModel
eliple
API

public class Circle extends Ellipse implements GraphObjectModel
{
    @Override
    public void draw(Graphics gr,int x,int y){ }

    @Override
    public void paint(Graphics gr,int x,int y){}
}

Java中没有多重继承,因此
Circle
只能扩展
eliple
AbstractGraphObject

如果你真的想遵循这种设计,你可以创建一个委托
类来包装一个
椭圆
对象。这意味着它是一个
和一个
抽象图形对象
,而不是一个
椭圆
,但它内部使用一个
椭圆
来绘制


我宁愿另一个选择改变设计。您可以更改设计,使其基于新的
GraphObject
接口,而不是
AbstractGraphObject
抽象类。所有图形类都将实现它。不再有超类限制,因此在这种情况下,
可以扩展
椭圆
。对于
GraphObject
的其余部分,他们可以选择扩展助手
AbstractGraphObject
基类,如果这对您有任何帮助。

Java中没有多重继承,因此
圆圈
只能扩展
椭圆
AbstractGraphObject

如果你真的想遵循这种设计,你可以创建一个委托
类来包装一个
椭圆
对象。这意味着它是一个
和一个
抽象图形对象
,而不是一个
椭圆
,但它内部使用一个
椭圆
来绘制


我宁愿另一个选择改变设计。您可以更改设计,使其基于新的
GraphObject
接口,而不是
AbstractGraphObject
抽象类。所有图形类都将实现它。不再有超类限制,因此在这种情况下,
可以扩展
椭圆
。对于
GraphObject
的其余部分,他们可以选择扩展助手
AbstractGraphObject
基类,如果这对您有任何帮助。

Java中没有多重继承,因此
圆圈
只能扩展
椭圆
AbstractGraphObject

如果你真的想遵循这种设计,你可以创建一个委托
类来包装一个
椭圆
对象。这意味着它是一个
和一个
抽象图形对象
,而不是一个
椭圆
,但它内部使用一个
椭圆
来绘制


我宁愿另一个选择改变设计。您可以更改设计,使其基于新的
GraphObject
接口,而不是
AbstractGraphObject
抽象类。所有图形类都将实现它。不再有超类限制,因此在这种情况下,
可以扩展
椭圆
。对于
GraphObject
的其余部分,他们可以选择扩展助手
AbstractGraphObject
基类,如果这对您有任何帮助。

Java中没有多重继承,因此
圆圈
只能扩展
椭圆
AbstractGraphObject

如果你真的想遵循这种设计,你可以创建一个委托
类来包装一个
椭圆
对象。这意味着它是一个
和一个
抽象图形对象
,而不是一个
椭圆
,但它内部使用一个
椭圆
来绘制


我宁愿另一个选择改变设计。您可以更改设计,使其基于新的
GraphObject
接口,而不是
AbstractGraphObject
抽象类。所有图形类都将实现它。不再有超类限制,因此在这种情况下,
可以扩展
椭圆
。对于
GraphObject
的其余部分,如果有任何帮助,他们可以选择扩展助手
AbstractGraphObject
基类。

Circle
方法委托给该方法?您能解释得更简短些吗?我是Java中OOP的新手。谢谢。请从
圆圈
方法c中指定该方法