📜  公共类扩展实现java(1)

📅  最后修改于: 2023-12-03 14:50:04.661000             🧑  作者: Mango

公共类扩展实现java

在Java中,我们可以使用公共类扩展来实现对已有类的扩展,并使得该类的行为和属性与原始类不同。这种方式可以让我们有效地改进代码的可重用性和易读性,同时也增加了代码的灵活性和可扩展性。

扩展现有类

在Java中,我们可以使用继承来扩展现有类。继承允许我们通过派生一个子类来继承已有类的行为和属性,并允许我们添加新的方法和属性。这使得我们可以通过继承来扩展现有类的行为。

例如:

public class Shape {
    private int x;
    private int y;

    public Shape(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    public void draw() {
        System.out.println("Drawing Shape at (" + x + ", " + y + ")");
    }
}

public class Circle extends Shape {
    private int radius;

    public Circle(int x, int y, int radius) {
        super(x, y);
        this.radius = radius;
    }

    public int getRadius() {
        return radius;
    }

    public void setRadius(int radius) {
        this.radius = radius;
    }

    @Override
    public void draw() {
        System.out.println("Drawing Circle at (" + getX() + ", " + getY() + "), with radius " + radius);
    }
}

上面代码中,我们定义了一个Shape类和一个Circle类。Circle类继承自Shape类并添加了一个新的radius属性。我们还重写了Shape类中的draw()方法,并在Circle类中实现了一个新的draw()方法。

扩展类的功能

当我们需要为一个已有类添加新的行为时,我们可以使用装饰器模式来扩展该类。装饰器模式允许我们动态地将一个对象添加到现有对象中,以增加其功能。

例如:

public interface IShape {
    void draw();
}

public class Shape implements IShape {
    private int x;
    private int y;

    public Shape(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    @Override
    public void draw() {
        System.out.println("Drawing Shape at (" + x + ", " + y + ")");
    }
}

public abstract class ShapeDecorator implements IShape {
    protected IShape decoratedShape;

    public ShapeDecorator(IShape decoratedShape) {
        this.decoratedShape = decoratedShape;
    }

    public void draw() {
        decoratedShape.draw();
    }
}

public class RedShapeDecorator extends ShapeDecorator {
    public RedShapeDecorator(IShape decoratedShape) {
        super(decoratedShape);
    }

    @Override
    public void draw() {
        decoratedShape.draw();
        setRedBorder(decoratedShape);
    }

    private void setRedBorder(IShape decoratedShape) {
        System.out.println("Border Color: Red");
    }
}

上面代码中,我们定义了一个IShape接口和一个Shape类来表示图形。我们还定义了一个ShapeDecorator抽象类,该抽象类实现了IShape接口并包含一个装饰的IShape对象。我们还定义了一个RedShapeDecorator类,该类扩展了ShapeDecorator并添加了一个新的红色边框。

总结

公共类扩展允许我们扩展现有类的行为和属性,以实现更大的灵活性和可扩展性。我们可以使用继承来扩展现有类的行为,也可以使用装饰器模式来扩展现有类的功能。这些技术都可以帮助我们更有效地重用代码并减少代码冗余,以便更轻松地维护和扩展代码。