Como fazer com que o construtor saiba quantos objetos já foram criados?

package contabancaria;
import java.util.Scanner;

public class ContaBancaria {
    
    int num;
    String dono;
    double saldo;
    double limite;

    
     public ContaBancaria() {
      this.num=X;  //  Numero da conta, eu queria que casa conta tivesse um numero respectivo , 1 , 2 ,3....    Como fazer isso?
      this.saldo=0;
      this.dono="Default";
      this.limite=100000;
     }
    
     
 
    void saca (double quantidade) {
    System.out.println ("Seu antigo saldo: "+this.saldo);
    double NovoSaldo = this.saldo - quantidade;
    this.saldo = NovoSaldo;
    System.out.println ("Seu novo saldo: "+this.saldo);
    }
    
    void deposita (double quantidade) {
    System.out.println ("Seu antigo saldo: "+this.saldo);
    double NovoSaldo = this.saldo + quantidade;
    this.saldo = NovoSaldo;
    System.out.println ("Seu novo saldo: "+this.saldo);
    }
    void mudadono (String nome) {
    this.dono=nome;
    System.out.println ("Nome de dono trocado.");
    System.out.println ("Novo nome: "+this.dono);
    }
    
    
    public static void main(String[] args) {
    System.out.println ("Iniciando aplicativo. . . Inicialização Completa!");
    System.out.println ("-----------------------------------------------");
    Scanner read = new Scanner(System.in);   
    ContaBancaria conta1 = new ContaBancaria();
    
    
    
    
    }
}

Você pode usar uma variável estática que seria seu contador. Cada vez que criar uma instancia, ela pode ser incrementada no construtor.

Tipo assim:

public class NInstancias {
	static int cont = 0;
	
	int num;
	
	public NInstancias() {
		this.num = cont++;
	}
	
	public static void main(String[] args) {
		NInstancias a = new NInstancias();
		System.out.println(a.num);
		NInstancias b = new NInstancias();
		System.out.println(b.num);
		NInstancias c = new NInstancias();
		System.out.println(c.num);		
	}
}