需要在Java中继承API的帮助吗
我有4门课是这样的:需要在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
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中指定该方法