フィールドは原則 private にして隠蔽することが推奨されますが、それでもどうしても外部からフィールドにアクセスしたい場合があります。
その場合は「getter」と「setter」というテクニックがよく使われています。

※ getter と setter を使うとカプセル化が崩れてしまうので使っていけないと主張する人も多いです

getter は隠蔽されたフィールドの値を外部から取得するために使うメソッドで、例えば Java ではソース 1 の様に定義します。

ソース 1 : getter の定義
public class HOGE{

  private int abc;  // abc は private なので外部から参照できない

  // フィールド abc の getter
  // メソッド名は何でも良いが「getフィールド名」とする人が多いかも
  public int get_abc(){ return abc; }
}

さてHOGE クラス以外のクラスから abc フィールドの値を取得したい場合はソース 2 のようにします。

ソース 2 : getter の使い方

・HOGE を継承していないクラスの場合

HOGE hoge = new HOGE();
int a = hoge.get_abc();


・HOGE を継承したクラスの場合

int a = get_abc();
または
int a = this.get_abc();

一方 setter は隠蔽されたフィールドの値を外部から変更するために使うメソッドで、例えば Java ではソース 3 の様に書きます。

ソース 3 : setter の定義
public class HOGE{

  private int abc; // abc は private なので外部から変更できない
  
  // フィールド abc の setter
  // メソッド名は何でも良いが「setフィールド名」とする人が多いかも
  public void set_abc( int a ){ abc = a; }
}

それで HOGE クラス以外のクラスから abc フィールドに値をセットしたい場合はソース 4 のようにします。

ソース 4 : setter の使い方

・HOGE を継承していないクラスの場合

HOGE hoge = new HOGE();
hoge.set_abc( 123 );


・HOGE を継承しているクラスの場合

set_abc( 123 );
または
this.set_abc( 123 );

なお getter と setter の代わりにプロパティという機能をもつ言語もあります。
プロパティは最近のオブジェクト指向プログラミングでは必須の機能ですので、詳しくは自分で調べておきましょう。

参考までに C# ではプロパティはソース 5 の様にして使います。

ソース 5 : (参考) C# のプロパティの使い方

HOGE.cs の内容:

class HOGE
{
    public int abc{ get; set; } = 123;  // abc プロパティの定義
}


MyMain.cs の内容:

using System;
class MyMain
{
    static void Main(string[] args){
        var hoge = new HOGE();
        Console.WriteLine( hoge.abc );
        hoge.abc = 321;
        Console.WriteLine( hoge.abc );
    }
}


実行:


$ mcs MyMain.cs HOGE.cs 
$ mono MyMain.exe 
123
321