Java中如何遵循OOP标准从其他类调用数组与方法
符合OOP标准的Arrays类重构与Main类调用实现
要遵循OOP标准,核心是将原Arrays类中的静态成员和方法改为实例级别的,通过创建类的对象来调用方法,而非直接依赖静态成员。以下是具体的重构和修改方案:
重构后的Arrays类
将静态Scanner改为实例变量,所有静态方法改为非静态方法,实现封装和实例化调用:
import java.util.Scanner; public class Arrays { // 改为实例级Scanner,避免全局静态共享 private Scanner scan = new Scanner(System.in); public int[] getIntegers(int number) { System.out.println("Please enter " + number + " numbers"); int[] entered = new int[number]; for(int i = 0; i < entered.length; i++) { entered[i] = scan.nextInt(); } return entered; } public void printArray(int[] entered) { for(int i = 0; i < entered.length; i++) { System.out.println("Element " + i + ", typed value was " + entered[i]); } } public int[] sortIntegers(int[] entered) { int[] sortedArray = new int[entered.length]; for(int i = 0; i < entered.length; i++) { sortedArray[i] = entered[i]; } boolean flag = true; int temp; while(flag) { flag = false; for(int i = 0; i < sortedArray.length - 1; i++) { if(sortedArray[i] < sortedArray[i + 1]) { temp = sortedArray[i]; sortedArray[i] = sortedArray[i + 1]; sortedArray[i + 1] = temp; flag = true; } } } return sortedArray; } }
修改后的Main类
通过创建Arrays类的实例,调用实例方法,无需静态导入:
public class Main { public static void main (String[] args) { // 创建Arrays类的实例 Arrays arrayHandler = new Arrays(); int[] myIntegers = arrayHandler.getIntegers(5); int[] sorted = arrayHandler.sortIntegers(myIntegers); arrayHandler.printArray(myIntegers); arrayHandler.printArray(sorted); } }
关键改动说明
- 移除静态成员:将原静态的
scan变量改为实例私有变量,符合OOP封装原则,避免静态变量带来的全局状态共享问题。 - 方法实例化:所有操作方法改为非静态,使方法属于Arrays对象的行为,而非类本身,符合OOP中“对象负责自身行为”的设计理念。
- 实例调用:在Main类中创建Arrays对象,通过对象调用方法,完全遵循OOP的实例化调用规范,无需依赖静态导入。
内容的提问来源于stack exchange,提问作者LemonRemon
相关产品推荐
相关产品推荐

