首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
安全
›
网络安全
›
2.3. 接口与抽象类
返回列表
发新帖
2.3. 接口与抽象类
[复制链接]
发表于 2023-6-7 12:46:29
|
显示全部楼层
|
阅读模式
接口和抽象类是 Java 中两种实现抽象和多态的方法。它们之间有一些区别,但也有一些相似之处。这一节我们将通过详细的例子来更深入地了解接口和抽象类。
2.3.1. 接口
接口可以定义一组方法签名,但不能包含方法的实现。一个类可以实现多个接口,实现接口的类必须实现接口中定义的所有方法。
定义接口:
interface InterfaceName {
ReturnType methodName(Parameters);
}
复制
代码
实现接口:
class ClassName implements InterfaceName {
// 实现接口中的所有方法
}
复制
代码
示例1:接口
interface Drawable {
void draw();
}
class Circle implements Drawable {
double radius;
@Override
public void draw() {
System.out.println("Drawing a circle with radius " + radius);
}
}
class Square implements Drawable {
double sideLength;
@Override
public void draw() {
System.out.println("Drawing a square with side length " + sideLength);
}
}
class Main {
public static void main(String[] args) {
Circle circle = new Circle();
circle.radius = 5;
circle.draw(); // 实现接口的方法
Square square = new Square();
square.sideLength = 4;
square.draw(); // 实现接口的方法
}
}
复制
代码
接口还可以具有默认方法和静态方法,这些方法可以包含实现。
interface InterfaceName {
default ReturnType defaultMethodName(Parameters) {
// 默认方法的实现
}
static ReturnType staticMethodName(Parameters) {
// 静态方法的实现
}
}
复制代码
2.3.2. 抽象类
抽象类可以包含抽象方法(没有实现的方法)和具体方法。子类必须实现抽象类中的所有抽象方法。一个类只能继承一个抽象类。
定义抽象类:
abstract class AbstractClassName {
abstract ReturnType methodName(Parameters);
ReturnType methodName(Parameters) {
// 具体方法的实现
}
}
复制代码
继承抽象类:
class ClassName extends AbstractClassName {
// 实现抽象类中的所有抽象方法
}
复制代码
示例2:抽象类
abstract class Shape {
abstract double getArea();
void printArea() {
System.out.println("The area is " + getArea());
}
}
class Circle extends Shape {
double radius;
@Override
double getArea() {
return Math.PI * radius * radius;
}
}
class Square extends Shape {
double sideLength;
@Override
double getArea() {
return sideLength * sideLength;
}
}
class Main {
public static void main(String[] args) {
Circle circle = new Circle();
circle.radius = 5;
circle.printArea(); // 继承自抽象类的具体方法
Square square = new Square();
square.sideLength = 4;
square.printArea(); // 继承自抽象类的具体方法
}
}
复制代码
2.3.3. 接口与抽象类的区别
一个类可以实现多个接口,但只能继承一个抽象类。
接口中的方法默认是 public,不能有其他访问修饰符。抽象类中的方法可以有不同的访问修饰符。
接口不能包含实例变量(成员变量),只能声明静态常量。抽象类可以包含实例变量。
接口支持默认方法和静态方法,抽象类不支持默认方法。
2.3.4. 何时使用接口和抽象类?
当你想要定义一组相关对象应该实现的方法,但不关心具体的实现时,使用接口。
当你想要为一组相关对象提供共享的实现和行为时,使用抽象类。
如果需要实现多个不同的行为组合,使用接口。因为 Java 不支持多继承,所以不能继承多个抽象类,但可以实现多个接口。
2.3.5. 小结
通过本节的学习,我们了解了接口和抽象类的概念以及它们之间的区别。接口和抽象类都可以实现抽象和多态,选择使用哪个取决于具体的需求和设计。
我们学习了如何定义接口和抽象类,如何使用它们来实现多态,并通过具体的例子加深了对这两个概念的理解。
在实际开发中,根据具体的应用场景和需求,合理地使用接口和抽象类,可以帮助我们设计出更加灵活、可扩展和易于维护的代码。
推荐阅读:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
我爱普洱茶
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表