面试题答案
一键面试- 接口里定义的方法默认修饰符:
- 在Java中,接口里定义的方法默认的修饰符是
public
和abstract
。从Java 8开始,接口还可以定义默认方法(使用default
关键字)和静态方法,默认方法不是abstract
的,静态方法也不是abstract
的,但它们仍然是public
的。
- 在Java中,接口里定义的方法默认的修饰符是
- 这种修饰符对接口方法的限制和影响:
public
修饰符:意味着接口中的方法必须对所有类可见,任何实现该接口的类都可以访问这些方法。这是接口实现多态性的基础,不同的实现类可以以自己的方式实现接口中public
的方法,从而在运行时表现出不同的行为。abstract
修饰符:表示接口中的方法没有方法体,只是定义了方法签名。实现接口的类必须为这些抽象方法提供具体的实现,否则该实现类也必须声明为abstract
。
- 举例说明在接口实现类中如何遵循这些规则:
在上述例子中,// 定义接口 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
方法,它默认是public
和abstract
的。Circle
和Rectangle
类实现了Shape
接口,必须以public
的访问权限来实现calculateArea
方法,因为接口中的方法默认是public
的。如果在实现类中不使用public
修饰符,会导致编译错误,因为缩小了接口方法的访问范围。同时,必须为抽象方法提供具体的实现,否则实现类需要声明为abstract
。