Ballerina中抽象类创建与继承机制实现方法问询
抽象类定义与子类实现示例
在Ballerina中,你可以用abstract class定义包含通用方法(抽象+具体)的抽象类,子类通过extends关键字继承并实现抽象方法。以下是实际代码示例:
1. 定义抽象类
abstract class PaymentProcessor { // 具体通用方法:所有支付处理器共用的金额校验逻辑 public function validateAmount(float amount) returns boolean { return amount > 0; } // 抽象方法:子类必须实现的支付处理逻辑 abstract public function processPayment(float amount) returns string; }
2. 实现具体子类
信用卡支付处理器
class CreditCardProcessor extends PaymentProcessor { // 实现抽象方法 public function processPayment(float amount) returns string { if validateAmount(amount) { return string `信用卡支付 $amount 已完成`; } return "无效支付金额"; } }
PayPal支付处理器
class PayPalProcessor extends PaymentProcessor { // 重写父类方法,自定义PayPal的金额校验规则 public function validateAmount(float amount) returns boolean { return amount >= 0.5; } // 实现抽象方法 public function processPayment(float amount) returns string { if validateAmount(amount) { return string `PayPal支付 $amount 已完成`; } return "PayPal:无效支付金额"; } }
3. 使用子类
public function main() { PaymentProcessor ccProcessor = new CreditCardProcessor(); io:println(ccProcessor.processPayment(100.0)); // 输出:信用卡支付 100.0 已完成 PaymentProcessor paypalProcessor = new PayPalProcessor(); io:println(paypalProcessor.processPayment(0.3)); // 输出:PayPal:无效支付金额 }
Ballerina继承机制核心要点
- 单继承限制:一个子类只能继承一个父类,不支持多类继承,但可以实现多个接口。
- 抽象方法强制实现:子类必须实现抽象类中所有的
abstract方法,否则子类也必须声明为abstract class。 - 方法重写规则:子类可以重写父类的非抽象方法,重写时方法签名(参数、返回值)必须匹配;若父类方法带
final修饰,则无法被重写。 - 访问修饰符作用域:
public:所有作用域可访问protected:仅父类和子类内部可访问private:仅当前类内部可访问
- 构造函数调用:子类构造默认会调用父类无参构造;若父类只有带参构造,子类必须显式通过
super(参数)调用父类构造。 - 多态支持:子类实例可以赋值给父类类型变量(向上转型),实现基于父类的统一调用。
内容的提问来源于stack exchange,提问作者Poorna
相关产品推荐
相关产品推荐

