📄 methodoverridedemo.java
字号:
//【例4-14】 方法覆盖的使用和父类中被覆盖方法的调用。
//程序清单4-14: MethodOverrideDemo.java
package e4_14;
public class MethodOverrideDemo {
public static void main(String args[]) {
// 创建一元二次方程实例:5x^2+6x+1 = 0;
TwoVariableEquation twe = new TwoVariableEquation(5, 6, 1);
// 求解两实根x1,x2
System.out.println("twe.getX1() = " + twe.getX1());
System.out.println("twe.getX2() = " + twe.getX2());
}
}
// 一元一次方程类OneVariableEquation
class OneVariableEquation {
double a;
double b;
public OneVariableEquation(double a, double b) {
this.a = a;
this.b = b;
}
public void setAB(double a, double b) {
this.a = a;
this.b = b;
}
double getX1() {
return -b / a;
}
}
// 一元二次方程类TwoVariableEquation继承类OneVariableEquation
class TwoVariableEquation extends OneVariableEquation {
double c;
public TwoVariableEquation(double a, double b, double c) {
// 调用父类的构造方法public OneVariableEquation(double a, double b)
super(a, b);
this.c = c;
}
public void setABC(double a, double b, double c) {
// 调用继承自父类的方法public void setAB(double a, double b)
setAB(a, b);
this.c = c;
}
// 子类中覆盖方法可以扩大而不能缩小父类中被覆盖方法的访问控制权限,
// 此处“getX1()”可为public、protected和默认,而不能为private
public double getX1() {// 覆盖父类方法
// 用"super.<方法名>([实参表])"调用被子类覆盖的方法getX1()
return super.getX1() / 2 + Math.sqrt(Math.pow(b, 2) - 4 * a * c);
}
public double getX2() {
return super.getX1() / 2 - Math.sqrt(Math.pow(b, 2) - 4 * a * c);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -