我正在尝试找出JAVA中super
关键字背后的实现。
我创建了一个抽象类和一个公共类扩展
abstract class AbsClass {
private String colour;
public AbsClass(String colour) {
this.colour = colour;
}
void findColour()
{
System.out.println(this.colour);
}
//getter and setter
}
现在我有一个实现该抽象类的公共类。
package abstraact.concept;
import java.lang.reflect.Method;
public class ExtendAbsClass extends AbsClass {
public ExtendAbsClass(String colour) {
super(colour);
}
@Override
void findColour() {
super.findColour();
/* Is the above line similar to
mthd = this.getClass().getSuperclass().getDeclaredMethod("findColour", null);
mthd.invoke(this, null);
*/
System.out.println("Colour in sub class method " + this.getColour());
}
public static void main(String[] args) {
ExtendAbsClass absClass = new ExtendAbsClass("Blue");
absClass.findColour();
}
}
我可以看到super
关键字背后的实施以及'this`关键字。
super
关键字如何访问超类方法?
提前致谢。
答案 0 :(得分:1)
即使有一些基本的构造java,它也被一部分java替换为字符串连接
"Colour: " + this.getColour()
装置
new StringBuilder(new String(new char[] {'C', 'o'..., ' '}).intern()).append(this.getColour());
但是,我不认为这适用于任何关键字。超级,也不是这样,抛出,扩展等都不能由其他java表达式实现。它们构建了语言的基础,并且不仅仅是用这种语言高效工作的语法糖。因此,它们通过字节代码和其他基本构造构建。