If i understood properly what you want to do, this is what you need:
public class SubActivity extends BaseActivity {
@Override
protected void setTag(Activity activity) {
super.setTag(this);
}
}
However, there's a big possible issue in your code, your abstract class is declaring TAG as static hence, any new activity that calls the method setTag will modify the value of the TAG in "First" class, which is not what you might want, you may want to keep it virtual "non static" so each object created will keep its own version of TAG with the proper name of the class assigned in each SubActivity...
Regards!