我是 OOP 的新手,正在通过一个练习工作,在该练习中我提供了一个抽象类并要求实现一个具体的子类,同时还通过添加隐藏状态来修改抽象类。
public abstract class someAbstractClass{
/* Constructor */
public New(String a, String b){
this.a = a;
this.b = b;
}
/* Abstract Getter 1 */
public abstract String geta();
/* Abstract Getter 2 */
public abstract String getb();
}
public class concreteClass extends someAbstractClass{
/* Constructor */
public New(String a, String b){
super(a,b);
}
/* Implementation of Getter 1 */
@Override
public String geta(){
// ???
}
/* Implementation of Getter 2 */
@Override
public String getb(){
// ???
}
}
以上是对两个类的简化。我不确定的是,如果方法在超类中是抽象的,我如何在具体的子类中定义这两个 getter 方法?更具体地说,如果我使用超类构造函数来实例化对象,我如何返回对象的属性。
我不能简单地说类似return super.a
或return this.a
- 当我尝试这样做时,编译器抱怨它找不到a
. 如果我在抽象类中有一个非抽象方法,我可以在我的具体(子)类中引用该方法,并访问我试图访问的属性。当然,我忽略了一些非常平庸的东西。提前感谢大家分享智慧。
我做了一些更正来回答你的问题。
类名以大写字母开头(这是惯例)
如果抽象类引用a
并b
使用this,它还必须将这些变量声明为类的成员。
构造函数使用与类相同的名称定义。
当你扩展一个类时,扩展类继承了超类的成员变量作为它自己的。因此a
,b
要从继承的类中引用和引用,您只需编写 a、b 或 this.a、this.b(this
从withing引用继承类的实例)。
如果继承的类只能读取值或更改它,它将取决于它是在超类(在这种情况下是抽象类)中声明为 public、private 或(默认)protected 的
public abstract class SomeAbstractClass{
protected String a;
protected String b;
/* Constructor */
public SomeAbstractClass(String a, String b){
this.a = a;
this.b = b;
}
/* Abstract Getter 1 */
public abstract String geta();
/* Abstract Getter 2 */
public abstract String getb();
}
public class concreteClass extends someAbstractClass{
/* Constructor */
public New(String a, String b){
super(a,b);
}
/* Implementation of Getter 1 */
@Override
public String getA(){
return this.a;
}
/* Implementation of Getter 2 */
@Override
public String getB(){
return this.b;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句