java 抽取类、抽取方法

本文深入探讨了抽象类和抽象方法的概念,解释了在Java中如何使用抽象思想来处理共性和特殊性的需求。通过具体代码示例,展示了抽象类和抽象方法的定义与使用,以及如何在子类中实现抽象方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java 抽取类、抽取方法

一、为什么用到抽象思想

        分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。

 

  1. 抽象类定义的格式:

    abstract class 类名 {

    }

  2. 抽象方法定义的格式:

public abstract 返回值类型 方法名(参数);

二、抽象类的特点

1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。

2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。

3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。 

三、代码实现

//定义员工Employe类(抽象类)
public abstract class Employe{
	private String id;//员工编号
	private String name;//员工名字
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	//抽象方法
	public abstract void work();			
}
//定义研发部员工类Developer 继承 员工类Employee
public abstract class Developer extends Employe{
	
}
//定义JavaEE工程师 继承 研发部员工类重写工作方法
public class JavaEE extends Developer{
	//重写工作方法
	public void work() {
		System.out.println("员工号为"+getId()+"的"+getName()+"正在研发网站");
	}
}
//在测试类中,创建JavaEE工程师对象,完成工作方法的调用
public class text {
	public static void main (String args[]) {
		JavaEE Bo = new JavaEE();
		Bo.setId("0231");
		Bo.setName("啵啵");
		Bo.work();
	}
}

 

Java 编程中,**抽取方法**(Extract Method)是一种常见的重构技术,其核心思想是将一段代码从原有的方法中提取出来,封装到一个新的方法中。这样做的目的是提高代码的可读性、可维护性以及复用性。 抽取方法的一个典型场景是当某个方法中存在重复的代码块,或者某段逻辑较为复杂、职责不清晰时,通过抽取方法可以将这部分逻辑独立出来,使其更易于理解和测试。例如,一个方法中可能包含多个职责不同的代码段,将它们分别抽取为独立的方法后,主方法的逻辑会更加清晰,同时也方便其他方法复用这些逻辑。 此外,抽取方法还可以提升代码的模块化程度。例如,当多个中存在相似的逻辑时,可以通过抽取公共方法并将其放置在父或工具中,从而减少代码冗余。例如,一个通用的服务接口中可能会定义一个 `execute` 方法,而具体的实现可以通过不同的匿名内部来提供不同的行为,从而实现灵活的扩展[^1]。 抽取方法在开发过程中也具备良好的工具支持。例如,在 Eclipse 或 IntelliJ IDEA 等主流的 Java IDE 中,开发者可以通过快捷键快速完成方法抽取操作,从而提高开发效率[^2]。 ### 示例代码 ```java // 原始方法 public void processOrder(Order order) { // 计算折扣 double discount = 0; if (order.getTotalPrice() > 1000) { discount = 0.1; } // 应用折扣 order.setFinalPrice(order.getTotalPrice() * (1 - discount)); // 保存订单 order.save(); } // 抽取方法后 public void processOrder(Order order) { double discount = calculateDiscount(order); order.setFinalPrice(order.getTotalPrice() * (1 - discount)); order.save(); } private double calculateDiscount(Order order) { if (order.getTotalPrice() > 1000) { return 0.1; } return 0; } ``` 在上述示例中,`calculateDiscount` 方法被从 `processOrder` 中抽取出来,使得主方法的逻辑更加清晰,并且 `calculateDiscount` 方法可以被其他方法复用。 ### 抽取方法的作用总结 1. **提高代码可读性**:将复杂的逻辑拆分为多个小方法,使主方法的逻辑更加清晰。 2. **增强代码复用性**:避免重复代码,多个地方可以调用抽取出来的方法。 3. **便于维护和测试**:独立的方法更容易进行单元测试和调试。 4. **降低耦合度**:通过抽取公共逻辑,减少之间的耦合。 5. **支持扩展性**:通过接口或抽象方法的设计,支持不同的实现方式,提高系统的灵活性[^1]。 ### 抽取方法的适用场景 - 当某个方法过于冗长时,可以将其拆分为多个小方法。 - 当多个方法中存在重复代码时,可以将重复部分抽取为公共方法。 - 当需要将某些逻辑独立出来以便测试或复用时,例如将业务逻辑与数据访问逻辑分离。 - 在设计通用组件时,例如网关、枚举工具等,抽取公共方法可以提高组件的通用性和可维护性[^3]。 ### 抽取方法的注意事项 - 抽取方法时应确保方法的命名具有明确的语义,能够准确表达其功能。 - 抽取方法不应过于细碎,否则可能导致方法数量过多,反而影响代码的可读性。 - 如果抽取方法需要访问外部变量,应确保这些变量以参数的形式传入,而不是直接依赖外部状态。 - 在抽取公共方法时,应考虑其适用范围,是否适合定义为静态方法、实例方法或抽象方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值