For sure you can access private variables/methods within the public method of the same class. Usually the variables should all be defined private and then use corresponding getter and setter to access them...
Some example:
*----------------------------------------------------------------------*
* class lcl_class definition
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_class DEFINITION.
PUBLIC SECTION.
METHODS: sub, get_j EXPORTING j TYPE i.
PRIVATE SECTION.
DATA: i TYPE i,
j TYPE i.
CLASS-DATA:k TYPE i VALUE 5.
METHODS: add.
ENDCLASS. "lcl_class DEFINITION
*----------------------------------------------------------------------*
* class lcl_class implementation
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_class IMPLEMENTATION.
METHOD add.
DATA l TYPE i.
me->l = 20.
me->i = 10.
me->j = 30.
me->k = me->i + me->j.
ENDMETHOD. "add
METHOD sub.
* data obj type ref to lcl_class.
call method me->add.
me->i = 10.
me->j = 20.
k = me->i - me->j .
ENDMETHOD. "sub
METHOD get_j.
j = ME->J.
ENDMETHOD. "get_j
ENDCLASS. "lcl_class IMPLEMENTATION
START-OF-SELECTION.
DATA obj TYPE REF TO lcl_class.
DATA: lv_j TYPE i.
CREATE OBJECT obj.
CALL METHOD obj->sub.
CALL METHOD obj->get_j
IMPORTING
j = lv_j.
WRITE: lv_j.