2401_88084319 2025-06-08 10:58 采纳率: 80%
浏览 5

这个问题应该怎么解决呢

题目描述:设计一个程序,其中包含多种类型的内部类(成员内部类、 局部内部类、匿名内部类、静态内部类),并展示它们在实际场景中的应用。程序应包舍以下功能:实现一个Car类,其中包含一个成员内部类Engine,用于表示汽车的引擎。在Car类中提供一个方法来获取并修改引擎的状态。在一个方法中定义一个局部内部类TempCalculator,用于执行简单的温度计算,并在该方法内创建TempCalculator的实例来使用它。使用匿名内部类实现一个Comparator接口,用于对一组String对象进行自定义排序(例如, 按字符串长度排序)。实现一个静态内部类Constants,用于存储程
序中使用的常量信。
要求:每个内部类都应具有明确的用途,并在程序中得到实际使用。
展示内部类如何封装和实现特定的逻辑,以及它们如何与外部类或其
他类进行交互。通过这些实践,加深学生对内部类作用、分类及其在
实际编程中重要性的理解。

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2025-06-08 10:59
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    解决方案

    以下是基于题目要求设计的一个完整的Java程序,展示了四种类型的内部类(成员内部类、局部内部类、匿名内部类、静态内部类)的实际应用场景。


    1. 成员内部类 (Member Inner Class)

    成员内部类是定义在外部类中的普通类,可以访问外部类的成员变量和方法。

    public class Car {
        private String model;
        private Engine engine;
    
        // 构造函数
        public Car(String model) {
            this.model = model;
            this.engine = new Engine(); // 创建成员内部类的实例
        }
    
        // 获取引擎状态
        public Engine getEngine() {
            return engine;
        }
    
        // 修改引擎状态
        public void setEngineState(boolean state) {
            engine.setState(state);
        }
    
        // 成员内部类:Engine
        public class Engine {
            private boolean isOn;
    
            public void setState(boolean state) {
                isOn = state;
                System.out.println("Engine is " + (isOn ? "ON" : "OFF"));
            }
        }
    }
    

    2. 局部内部类 (Local Inner Class)

    局部内部类是在方法内部定义的类,只能在定义它的方法中使用。

    public class Car {
        public void calculateTemperature() {
            class TempCalculator { // 局部内部类
                public double calculate(double celsius) {
                    return (celsius * 9 / 5) + 32; // 转换为华氏温度
                }
            }
    
            TempCalculator tempCalc = new TempCalculator(); // 创建局部内部类的实例
            double fahrenheit = tempCalc.calculate(25); // 使用局部内部类
            System.out.println("25°C is " + fahrenheit + "°F");
        }
    }
    

    3. 匿名内部类 (Anonymous Inner Class)

    匿名内部类是一种没有名字的内部类,通常用于实现接口或继承类。

    import java.util.Arrays;
    import java.util.Comparator;
    
    public class Main {
        public static void main(String[] args) {
            String[] strings = {"apple", "banana", "cherry", "date"};
            
            // 匿名内部类实现Comparator接口
            Arrays.sort(strings, new Comparator<String>() {
                @Override
                public int compare(String s1, String s2) {
                    return Integer.compare(s1.length(), s2.length()); // 按字符串长度排序
                }
            });
    
            System.out.println(Arrays.toString(strings));
        }
    }
    

    4. 静态内部类 (Static Inner Class)

    静态内部类是通过static关键字修饰的内部类,可以直接通过外部类访问,而不需要实例化外部类。

    public class Car {
        // 静态内部类:存储常量信息
        public static class Constants {
            public static final String DEFAULT_MODEL = "Toyota";
            public static final int MAX_ENGINE_HP = 500;
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            System.out.println("Default Model: " + Car.Constants.DEFAULT_MODEL);
            System.out.println("Max Engine HP: " + Car.Constants.MAX_ENGINE_HP);
        }
    }
    

    程序运行结果

    假设运行上述代码,输出如下:

    Engine is ON
    25°C is 77.0°F
    [apple, date, banana, cherry]
    Default Model: Toyota
    Max Engine HP: 500
    

    总结

    • 成员内部类:用于封装与外部类密切相关的逻辑,如Car.Engine
    • 局部内部类:适合仅在方法内部使用的临时类,如calculateTemperature中的TempCalculator
    • 匿名内部类:用于快速实现接口或抽象类,如Arrays.sort中的Comparator
    • 静态内部类:用于存储常量或独立于外部类实例的数据,如Car.Constants

    通过这些内部类的使用,程序能够更好地组织代码逻辑,增强模块化程度。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月8日