Dúvida sobre padrão Abstract Factory no JAVA

Bom, estou estudando o Abstract Factory e entendi que o mesmo é possui uma classe Factory Abstrata, ou seja, o cliente sempre chamará essa classe abstrata, e através dela que será feita a chamada as classes Concretas.
Mas o que eu não entendi é: Se a Classe é abstrata (AbstractFactory.java) com o cliente consegue instanciar um objeto da mesma ?

Em Java, uma AbstractFactory é definida como uma interface geralmente. Nesse caso, você tem que criar implementações da AbstractFactory. Leia bem a definição do padrão, e repare que ela só faz sentido se você precisa criar uma fábrica para famílias de objetos relacionados; Sendo assim, você precisa criar uma implementação da AbstractFactory para cada implementação da família de objetos; Geralmente, a escolha da implementação a ser usada é isolada também, você pode ler uma arquivo de configuração a instanciar via reflection, usar injeção de dependências, etc.

Ḿas pelo que li sobre este Padrão, o cliente só usa a Classe Abstrata e nem sabe que as concretas existem, sendo assim a dúvida é: Como ele usa a Classe Abstrata se ele é ABSTRATA ?

Ué, o tipo da variável pode ser uma classe abstrata, mas o objeto que ela referencia pertence a uma classe concreta, polimorfismo básico.

Pode dar um exemplo prático disso por gentileza ?

package exemplo;

interface WidgetFactory{
   Button getButton();
   TextArea getTextArea();
   ComboBox getComboBox();
}

class DBWidgetFactory implements WidgetFactory{
   Button getButton(){
      return new DBButton();
   }

   TextArea getTextArea(){
     return new DBTextArea();
   }

   ComboBox getComboBox(){
     return new DBComboBox();
   }
}

public class Main{
   public static void main(String [] args) throws Throwable{
      WidgetFactory factory = (WidgetFactory) Class.forName(args[0]).newInstance(); //o nome da classe concreta é passada via linha de comando
   }
}

//java exemplo.Main exemplo.DBWidgetFactory