
什么是抽象?
抽象是面向对象编程(oop)的基本原则之一,它是指系统隐藏复杂实现细节并仅显示基本功能的能力。抽象的目标是通过允许用户关注对象的作用而不是它是如何做的来简化与复杂对象的交互。
实际上,抽象是通过使用抽象类和接口来完成的,它们定义了必须由子类或具体类实现的行为。
为什么要使用抽象?
抽象有几个好处:
- 简单性:隐藏复杂性,允许用户以更简单、更直观的方式与对象交互。
- 代码重用:类和接口可以在不同的上下文中重用,提高一致性。
- 可维护性:只要公共接口保持不变,实现细节的更改不会影响使用抽象的代码。
java 中的抽象示例
1.使用抽象类
抽象类允许您定义没有实现的方法(抽象方法)和可由子类使用的具体方法。让我们创建一个示例,其中包含一个名为 shape 的抽象类以及子类 circle 和 rectangle。
citySHOP是一款集CMS、网店、商品、分类信息、论坛等为一体的城市多用户商城系统,已完美整合目前流行的Discuz! 6.0论坛,采用最新的5.0版PHP+MYSQL技术。面向对象的数据库连接机制,缓存及80%静态化处理,使它能最大程度减轻服务器负担,为您节约建设成本。多级店铺区分及联盟商户地图标注,实体店与虚拟完美结合。个性化的店铺系统,会员后台一体化管理。后台登陆初始网站密匙:LOVES
// classe abstrata
public abstract class forma {
// método abstrato
public abstract double calculararea();
// método concreto
public void imprimirarea() {
system.out.println("a área é: " + calculararea());
}
}
// subclasse circulo
public class circulo extends forma {
private double raio;
public circulo(double raio) {
this.raio = raio;
}
// implementando o método calculararea
@override
public double calculararea() {
return math.pi * raio * raio;
}
}
// subclasse retangulo
public class retangulo extends forma {
private double largura;
private double altura;
public retangulo(double largura, double altura) {
this.largura = largura;
this.altura = altura;
}
// implementando o método calculararea
@override
public double calculararea() {
return largura * altura;
}
}
使用类
public class main {
public static void main(string[] args) {
forma circulo = new circulo(5);
forma retangulo = new retangulo(4, 6);
// imprimindo áreas
circulo.imprimirarea(); // saída: a área é: 78.53981633974483
retangulo.imprimirarea(); // saída: a área é: 24.0
}
}
预期输出:
a área é: 78.53981633974483 a área é: 24.0
2. 使用接口
接口是实现抽象的另一种方式。它们定义了实现它们的类必须提供的方法,但它们不提供默认实现。
// interface
public interface forma {
double calculararea();
void imprimirarea();
}
// classe circulo implementando a interface
public class circulo implements forma {
private double raio;
public circulo(double raio) {
this.raio = raio;
}
@override
public double calculararea() {
return math.pi * raio * raio;
}
@override
public void imprimirarea() {
system.out.println("a área do círculo é: " + calculararea());
}
}
// classe retangulo implementando a interface
public class retangulo implements forma {
private double largura;
private double altura;
public retangulo(double largura, double altura) {
this.largura = largura;
this.altura = altura;
}
@override
public double calculararea() {
return largura * altura;
}
@override
public void imprimirarea() {
system.out.println("a área do retângulo é: " + calculararea());
}
}
使用类
public class main {
public static void main(string[] args) {
forma circulo = new circulo(5);
forma retangulo = new retangulo(4, 6);
// imprimindo áreas
circulo.imprimirarea(); // saída: a área do círculo é: 78.53981633974483
retangulo.imprimirarea(); // saída: a área do retângulo é: 24.0
}
}
预期输出:
A área do círculo é: 78.53981633974483 A área do retângulo é: 24.0
最后的考虑因素
抽象是面向对象编程中的一个基本概念,有助于创建更简单、可重用且更易于维护的系统。通过使用抽象类和接口,开发人员可以隐藏实现的复杂性,允许用户和系统的其他部分以直观的方式与对象交互。理解和应用抽象对于有效的面向对象软件开发至关重要。







