NullReferenceException: Object reference not set to an instance of an object

This is the error i get:
ArgumentException: You can only call GUI functions from inside OnGUI.
UnityEngine.GUIUtility.CheckOnGUI ()
UnityEngine.GUI.Box (Rect position, UnityEngine.GUIContent content, UnityEngine.GUIStyle style)
UnityEngine.GUI.Box (Rect position, System.String text)
Enemies.OnGUI () (at Assets/Scripts/Enemies.cs:74)
LargeEnemy.Update () (at Assets/Scripts/LargeEnemy.cs:35)

Main Script Enemies:

using UnityEngine;
using System.Collections;

public class Enemies : MonoBehaviour {

	public int maxHealth;
	public int curHealth;

	protected float healthBarLength;

	protected Transform playerTransform;
	protected Transform myTransform;

	
	protected float MovementSpeed;
	protected float RotationSpeed;
	protected float DetectionRange;

	
	protected void Awake() {
		myTransform = transform;
		playerTransform = GameObject.FindGameObjectWithTag("Player").transform;
	}



	void Start () {

		healthBarLength = Screen.width / 2;
	
	}


	void Update () {



	}
	protected virtual void AddjustCurrentHealth(int adj) {
		curHealth += adj;
		
		if(curHealth < 0)
			curHealth = 0;
		
		if(curHealth > maxHealth)
			curHealth = maxHealth;
		
		if(maxHealth < 1)
			maxHealth = 1;
		
		healthBarLength = (Screen.width / 2) * (curHealth /(float)maxHealth);
	}

	protected virtual void OnGUI () {
		if(curHealth < maxHealth) {
			Vector2 targetPos;
			targetPos = Camera.main.WorldToScreenPoint (transform.position);
			GUI.Box (new Rect(targetPos.x - 65, Screen.height- targetPos.y - 50, 120, 20), curHealth + "/" + maxHealth);
		}
	}

	protected virtual void movement () {


	
		if (Vector3.Distance(playerTransform.position, myTransform.position) < DetectionRange)
		{
			//Rotate to player
			myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(playerTransform.position - myTransform.position), RotationSpeed * Time.deltaTime);
			
			//Move to player
			myTransform.position += myTransform.forward * MovementSpeed * Time.deltaTime;
		
		}
	}

}

Child Script LargeEnemy:

using UnityEngine;
using System.Collections;

public class LargeEnemy : Enemies {
		


		// Use this for initialization
		void Start () {

		maxHealth = 100;
		curHealth = 50;
		
		healthBarLength = Screen.width / 2;
			
			MovementSpeed = 2.5f;
			RotationSpeed = 1.0f;
			DetectionRange = 10;


			//Transform playerTransform;
			//Transform myTransform;
			
			base.Awake();


			
			
			
		}
		
		// Update is called once per frame
		void Update () {

			base.OnGUI();
			base.AddjustCurrentHealth(0);
			base.movement();

			
			

			
		}

	}

Where i get errors is in this line:

GUI.Box (new Rect(targetPos.x - 65, Screen.height- targetPos.y - 50, 120, 20), curHealth + "/" + maxHealth);

Even though i inherit the OnGUI to child classes of Enemies it still shows the GUI on the enemy. So i get an error but everything seems to work? Can anybody explain this to me ?
Additional information:
When i apply this to more than one enemy, each of them gain eah others healthbar instead of just one individual.

The problem is exactly what the error says,.

You are trying to call your OnGUI routine from inside of your Update. OnGUI execution state and Update execution states are different.

You should never call an “OnGUI” method or any gui functions except within an OnGUI callback from the system.