学习第一行代码时,曾了解到可通过新建一个类继承AppCompatActivity,其他所新建的活动继承自这个新建的类来实现管理所有活动的目的。
在这个读取RFID内容的程序中,代码结构为MainActivity继承自SerialPortActivity,SerialPortActivity继承自ACtivity。SerialPortActivity中
有管理port开启关闭的方法,以及一个onDataReceiver的虚类(这个类在MAinActivity中重写,但在SerialPortActivity中有被调用。)
在MainAcitvity中,
public void btnOpen_Click(View btn) {
if(this.open()) {
this.btnOpen.setEnabled(false);
this.btnClose.setEnabled(true);
}
}
对于open()这个方法,是写在SerialPortActivity中的。
public boolean open() {
boolean bret = false;
if(this.serialPortTool == null) {
this.serialPortTool = new SerialPortTool();
}
try {
this.mSerialPort = this.serialPortTool.getSerialPort("/dev/ttyS2", 9600);
this.mOutputStream = this.mSerialPort.getOutputStream();
this.mInputStream = this.mSerialPort.getInputStream();
if(this.mReadThread == null) {
this.mReadThread = new SerialPortActivity.ReadThread((SerialPortActivity.ReadThread)null);
this.mReadThread.start();
}
bret = true;
} catch (SecurityException var3) {
this.DisplayError(2131099651);
} catch (IOException var4) {
this.DisplayError(2131099652);
} catch (InvalidParameterException var5) {
this.DisplayError(2131099650);
} catch (Exception var6) {
this.DisplayError(2131099652);
}
return bret;
}
两个类的存在让这个程序的逻辑比较清晰,if()语句中()里的东西会被执行,而不是仅仅的返回一个布尔类型的值,不是放在沙盒中运行的,它依然执行了所应该实现的功能。
总的来说,if()语句里的内容会被执行(不是在沙盒执行,值返回一个布尔类型的值)
对于一些基础功能的东西,可单独构成一个类(其中可包含一些虚函数等),其他类继承这个基础类。来实现
多态继承和功能分开