Interface 和 abstract class 对比
接口和抽象类的区别?
Parameters | Interface | Abstract class |
---|---|---|
使用时机 | 功能增强 | 避免独立,减少代码冗余 |
继承/实现 | 一个类可以实现多个接口 | 一个类只能继承一个抽象类 |
访问修饰符 | 不支持 private,protected,一切皆 public | 支持所有修饰符 |
方法实现 | Java 8+支持默认实现,需要在方法前加 default 或 static | Java 8+ 支持默认实现 |
Interface
public interface ShapeInterface {
default double getArea(){
System.out.println("ShapeInterface default getArea().");
return 0;
}
void foo();
}
public class Circle implements ShapeInterface {
int r;
double pi = 3.14;
public Circle(int r) {
this.r = r;
}
@Override
public double getArea() {
return pi * r * r;
}
//must impl in sub class
@Override
public void foo() {
}
public static void main(String[] args) {
final Circle circle = new Circle(2);
final double circleArea = circle.getArea();
System.out.println("circleArea="+circleArea);
}
}
Abstract class
abstract class ShapeAbstractClass {
abstract double getArea();
}
public class Circle2 extends ShapeAbstractClass {
int r;
double pi = 3.14;
private Circle2(int r) {
this.r = r;
}
@Override
public double getArea() {
return pi * r * r;
}
public static void main(String[] args) {
final Circle2 circle = new Circle2(2);
final double circleArea = circle.getArea();
System.out.println("circleArea="+circleArea);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: Exception 和 Error 介绍
下一篇: 谈谈自己对于 AOP 的了解
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论