抽象类A,其中有两个私有private属性a,b,类B继承A,并有get方法获取属性,那么该如何用get方法获取父类a,b属性,且不改变a,b的修饰private
时间: 2024-11-12 22:36:56 浏览: 16
为了在子类`B`中访问父类`A`的私有属性`a`和`b`,你需要利用继承和访问者模式(如果这两个概念还不熟悉的话)。在Java中,由于封装性的限制,直接访问私有字段是不可能的。但是,你可以提供公共的getter方法或者使用 getter 和 setter 方法。
这里是一个简单的示例:
```java
// 抽象父类 A
public abstract class A {
private String a;
private int b;
// 提供公共的 getter 方法
public abstract String getA();
public abstract int getB();
// 如果需要,也可以提供 setter 方法,但通常情况下在抽象类中不推荐这样做
// public void setA(String a) { this.a = a; }
// public void setB(int b) { this.b = b; }
}
// 子类 B 继承 A 并覆盖 get 方法
public class B extends A {
@Override
public String getA() {
return a; // 返回 a 的值,虽然它是私有的,但在子类内部是可以访问的
}
@Override
public int getB() {
return b; // 同理,返回 b 的值
}
}
// 创建 B 类型的对象并调用 get 方法获取父类属性
B obj = new B();
String parentA = obj.getA(); // 访问父类 A 的 a 属性
int parentB = obj.getB(); // 访问父类 A 的 b 属性
```
在这个例子中,子类`B`通过覆盖`getA()`和`getB()`方法间接实现了对父类`A`私有属性的访问。这种方式保持了封装性和信息隐藏的原则。
阅读全文