作者: 牙叔
使用情景
在java中, 抽象类必须继承才能使用, 那么在autojs中怎样实现继承抽象类呢?
java中的实现
1.创建一个抽象类
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);
- 实现继承抽象类的关键代码
JavaAdapter
, 第一个参数是抽象类, 第二个参数是抽象类方法的具体实现
function Salary() { let salary = new JavaAdapter(Employee, { computePay: function (pay) { log("Computing salary pay for " + "Lei Li"); return pay * 2; }, }); return salary; }
名人名言
思路是最重要的, 其他的百度, bing, stackoverflow, 安卓文档, autojs文档, 最后才是群里问问
--- 牙叔教程
声明
部分内容来自网络
本教程仅用于学习, 禁止用于其他用途