我是面向对象编程的初学者,我需要一些答案来解决一些问题。我有一个MainActivity和几个用于不同操作的类。例如,在MainActivity中,我从BluetoothReceiver类创建了一个名称为mBluetoothReceiver的对象。存在用于建立和管理BT连接的方法,例如sendData。在Nmea类中,我获得了一些使用BluetoothReceiver中的方法的方法,因此出于这个原因,我通过了构造函数mBluetoothReceiver。
MainActivity类:
public class MainActivity extends Activity {
BluetoothService mBluetoothService = new BluetoothService(this);
//create new object from Nmea class and pass mBluetoothService to mNmea
Nmea mNmea = new Nmea(mBluetoothService);
}
Nmea类:
public class Nmea {
BluetoothService mBluetoothService;
//constructor for Nmea for BluetoothServce object
public Nmea(BluetoothService bluetoothService) {
mBluetoothService = bluetoothService;
}
public Nmea()
{
//empty constructor {
}
//Nmea methods...
}
我的问题是,我也有GPS类,它也将使用Nmea类中的方法,但是我不知道该怎么做。将空的构造函数放在Nmea类中并在GPS类中创建Nmea对象是可以的吗?如果我不传递BluetoothService对象,蓝牙可能无法正常工作?在GPS类中,我无法创建新的BluetoothService连接对象并将其传递给Nmea构造函数,因为在整个项目中我只需要一个已建立的连接。
GPS类:
public çlass GPS {
Nmea gpsNmea = new Nmea();
//I need to use Nmea methods here
}
我希望你能理解我的问题。用这种东西上班是什么好习惯呢?
谢谢!
最佳答案
您可以这样写:
public class MainActivity extends Activity {
BluetoothService mBluetoothService = new BlueToothService(this);
Nmea mNmea = new Nmea(mBluetoothService);
Gps mGps = new Gps(mNmea);
}
并且您的
Gps
cconstructor需要看起来像这样:public class Gps {
private Nmea mNmea;
public Gps(Nmea nmea) {
mNmea = nmea;
}
}
如果只需要一个
BluetoothService
类的实例,则需要使用Singleton design pattern编写他,并且Nmea
类中所有需要的方法都声明为public
关于java - 对创建对象和使用其方法感到困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16497021/