抽象类中的公共变量是指在抽象类中定义的可以被所有子类访问和修改的变量。这些变量通常用于存储与类层次结构中的多个类相关的数据,或者用于实现一些通用的功能。
抽象类:抽象类是不能被实例化的类,它通常包含一个或多个抽象方法(没有具体实现的方法),以及一些具体的方法和变量。抽象类的主要目的是为子类提供一个通用的模板。
公共变量:在抽象类中声明的公共变量(使用public
关键字)可以被该类的所有子类访问和修改。
abstract class Shape {
// 公共实例变量
public String color;
// 抽象方法
public abstract double area();
// 具体方法
public void setColor(String color) {
this.color = color;
}
public String getColor() {
return color;
}
}
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double area() {
return Math.PI * radius * radius;
}
}
class Square extends Shape {
private double side;
public Square(double side) {
this.side = side;
}
@Override
public double area() {
return side * side;
}
}
public class Main {
public static void main(String[] args) {
Circle circle = new Circle(5);
circle.setColor("Red");
System.out.println("Circle color: " + circle.getColor());
System.out.println("Circle area: " + circle.area());
Square square = new Square(4);
square.setColor("Blue");
System.out.println("Square color: " + square.getColor());
System.out.println("Square area: " + square.area());
}
}
问题:子类意外地修改了公共变量的值,导致程序行为不一致。
原因:公共变量可以被所有子类访问和修改,缺乏封装性。
解决方法:
abstract class Shape {
private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
// 其他代码...
}
final
。abstract class Shape {
public final String color;
public Shape(String color) {
this.color = color;
}
// 其他代码...
}
通过这些方法,可以更好地管理和控制抽象类中公共变量的使用,从而避免潜在的问题。
领取专属 10元无门槛券
手把手带您无忧上云