MST

星途 面试题库

面试题:Java接口中方法默认修饰符及相关特性

在Java中,接口里定义的方法默认的修饰符是什么?这种修饰符对接口方法有哪些限制和影响?举例说明在接口实现类中如何遵循这些规则。
20.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 接口里定义的方法默认修饰符
    • 在Java中,接口里定义的方法默认的修饰符是publicabstract。从Java 8开始,接口还可以定义默认方法(使用default关键字)和静态方法,默认方法不是abstract的,静态方法也不是abstract的,但它们仍然是public的。
  2. 这种修饰符对接口方法的限制和影响
    • public修饰符:意味着接口中的方法必须对所有类可见,任何实现该接口的类都可以访问这些方法。这是接口实现多态性的基础,不同的实现类可以以自己的方式实现接口中public的方法,从而在运行时表现出不同的行为。
    • abstract修饰符:表示接口中的方法没有方法体,只是定义了方法签名。实现接口的类必须为这些抽象方法提供具体的实现,否则该实现类也必须声明为abstract
  3. 举例说明在接口实现类中如何遵循这些规则
    // 定义接口
    interface Shape {
        double calculateArea();
    }
    
    // 接口实现类
    class Circle implements Shape {
        private double radius;
    
        public Circle(double radius) {
            this.radius = radius;
        }
    
        @Override
        public double calculateArea() {
            return Math.PI * radius * radius;
        }
    }
    
    class Rectangle implements Shape {
        private double width;
        private double height;
    
        public Rectangle(double width, double height) {
            this.width = width;
            this.height = height;
        }
    
        @Override
        public double calculateArea() {
            return width * height;
        }
    }
    
    在上述例子中,Shape接口定义了calculateArea方法,它默认是publicabstract的。CircleRectangle类实现了Shape接口,必须以public的访问权限来实现calculateArea方法,因为接口中的方法默认是public的。如果在实现类中不使用public修饰符,会导致编译错误,因为缩小了接口方法的访问范围。同时,必须为抽象方法提供具体的实现,否则实现类需要声明为abstract