作者: ?牙叔
使用情景
在java中, 抽象類必須繼承才能使用, 那么在autojs中怎樣實現繼承抽象類呢?
java中的實現
創建一個抽象類
package com.yashu;public abstract class Employee{ private String name; private String address; private int number; public abstract double computePay(Double pay);}
繼承抽象類
package com.yashu;public class Salary extends Employee{ private double salary; // Annual salary public double computePay(Double pay) { System.out.println("Computing salary pay for " + "Lei Li"); return pay * 2; }}
測試代碼
package com.yashu;public class ExtendsTest { public static void main(String[] args) { System.out.println("this is com.yashu.ExtendsTest"); Salary s = new Salary(); Double d = s.computePay(10.10); System.out.println(d); }}
上面沒問題, 我測試過了, 我的測試環境,
生成dex
軟件: idea
方法參照: 百度搜索github autojsUseDex
autojs中抽象類的繼承
導入dex, 我用的是以autojs項目方式運行代碼, main.js和extendstest.dex在同一個文件夾
let dexFilePath = files.join("./extendstest.dex");runtime.loadDex(dexFilePath);
導入抽象類Employee
importClass(com.yashu.Employee);
實例化Salary, 并調用抽象方法computePay
s = new Salary();d = s.computePay(10.1);log(d);
實現繼承抽象類的關鍵代碼JavaAdapter, 第一個參數是抽象類, 第二個參數是抽象類方法的具體實現
function Salary() { let salary = new JavaAdapter(Employee, { computePay: function (pay) { log("Computing salary pay for " + "Lei Li"); return pay * 2; }, }); return salary;}