题目
- JAVA25 实现抽象方法
- 分析:
- 代码:
- JAVA26 实现接口
- 分析:
- 代码:
JAVA25 实现抽象方法
描述
已知抽象类Base中定义了calculate方法,该方法的计算过程依赖于sum()和avg(),而后两个方法均为抽象方法。要求定义Base的子类Sub类,并实现父类的抽象方法,使得main函数中的运算逻辑得以正确执行。
输入描述:
两个整数
输出描述:
两个整数的和除以两个整数的平均值(平均值为int类型,不考虑小数问题)
示例:
输入:1 2 输出:3
分析:
1.先把两个抽象方法实现。
2.根据两个抽象方法的用法,编写方法的内容。
代码:
import java.util.Scanner;public class Main {public static void main(String[] args) {// Sub是需要你定义的子类Base base = new Sub();Scanner scanner = new Scanner(System.in);while (scanner.hasNextInt()) {int x = scanner.nextInt();int y = scanner.nextInt();base.setX(x);base.setY(y);System.out.println(base.calculate());}}}abstract class Base {private int x;private int y;public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public int calculate() {if (avg() == 0) {return 0;} else {return sum() / avg();}}/*** 返回x和y的和*/public abstract int sum();/*** 返回x和y的平均值*/public abstract int avg();}class Sub extends Base {//write your code here......@Overridepublic int sum() {return super.getY()+super.getX();}@Overridepublic int avg() {return sum()/2;}}
Sub类继承于Base类,故Sub类有getX()和getY()方法,super可以省略。
import java.util.Scanner;public class Main {public static void main(String[] args) {// Sub是需要你定义的子类Base base = new Sub();Scanner scanner = new Scanner(System.in);while (scanner.hasNextInt()) {int x = scanner.nextInt();int y = scanner.nextInt();base.setX(x);base.setY(y);System.out.println(base.calculate());}}}abstract class Base {private int x;private int y;public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public int calculate() {if (avg() == 0) {return 0;} else {return sum() / avg();}}/*** 返回x和y的和*/public abstract int sum();/*** 返回x和y的平均值*/public abstract int avg();}class Sub extends Base {//write your code here......@Overridepublic int sum() {return super.getY()+super.getX();}@Overridepublic int avg() {return sum()/2;}}
JAVA26 实现接口
描述
已知接口Comparator,内部定义了max函数,用于返回两个整数中的最大值。请定义该接口的实现类,使得main方法中的比较逻辑可以正确执行,要求实现类的名称为ComparatorImpl。
输入描述:
两个整数
输出描述:
两个整数中的最大值
示例:
输入:1 3 输出:3
分析:
1.编写ComparatorImpl类实现(实现关键字:implements)接口Comparator。
2.实现max函数。
3.编写max函数具体代码。
代码:
import java.util.Scanner;public class Main {public static void main(String[] args) {Comparator comparator = new ComparatorImpl();Scanner scanner = new Scanner(System.in);while (scanner.hasNextInt()) {int x = scanner.nextInt();int y = scanner.nextInt();System.out.println(comparator.max(x, y));}}}interface Comparator {/*** 返回两个整数中的最大值*/int max(int x, int y);
}//write your code here......class ComparatorImpl implements Comparator{@Overridepublic int max(int x, int y) {if(x>y)return x;else return y;}}
简化代码
import java.util.Scanner;public class Main {public static void main(String[] args) {Comparator comparator = new ComparatorImpl();Scanner scanner = new Scanner(System.in);while (scanner.hasNextInt()) {int x = scanner.nextInt();int y = scanner.nextInt();System.out.println(comparator.max(x, y));}}}interface Comparator {/*** 返回两个整数中的最大值*/int max(int x, int y);
}//write your code here......class ComparatorImpl implements Comparator{@Overridepublic int max(int x, int y) {return x>y?x:y;}}