Vamos a aclarar conceptos.
Cuando a la clase Persona, le pones este atributo:
private String karla;
¡¡Ojo cuidaoo!! Eso no implica que a esa Persona le estés asignando el nombre "karla".
Eso lo que implica es que has creado un atributo llamado "karla".
Insisto, karla es el nombre de la variable que declaras como atributo.
No es el nombre de la Persona que queremos representar.
Lo mismo con el otro atributo llamado "juan".
Te devuelve null porque los nombres que "seteas", los introduces en la variable/atributo llamada "nombre", que es la correcta, la única que deberías estar usando y no se por qué has necesitado declararla como Object.
Como decía, "seteas" los nombres, en "nombre". Eso es correcto.
Pero tu método get, el que retorna el valor del nombre, haces que retorne el valor del atributo llamado "juan". Este atributo en ningún momento ha recibido previamente ningún valor, así que su valor es nulo. Por eso devuelve null
Insisto que aunque a los atributos los llames, "juan", "karla" o "pepe"... eso no implica que dentro tengan esos nombres de personas.
Todos ellos comienzan con valor null. Y si no reciben nada por el constructor de la clase, o por sus correspondientes métodos SET, seguirán teniendo valor null.
En definitiva, una clase que modela una Persona, no debe tener atributos bautizados con nombres reales de personas, porque eso no implica que esos vayan a ser los nombres de ese objeto Persona
Los nombres de los atributos, han de hacer referencia a los aspectos que queremos modelar de una determinada entidad.
Por ejemplo, los atributos habituales de una Persona podrían ser nombre, edad, teléfono, peso, género, altura, color de ojos....
A esta clase Persona podemos darle dos constructores (o tres, o cuatro, o cincuenta..., tantos como creamos necesarios).
Uno es un constructor "vacío", que no recibe ningún valor al construir el objeto.
En este caso conviene dar un valor inicial a los atributos, aunque sean cadenas vacías y valor 0 para los datos numéricos, precisamente para evitar valores null como te estaba pasando.
Y otro constructor que sí reciba directamente unos valores para asignárselos a los atributos.
Te dejo un ejemplo con una clase Persona con varios atributos y en el main se crean dos objetos Persona, uno con el constructor SIN parámetros (valores) y otro con el constructor CON parámetros.
Y a continuación se muestran todos los datos de estas Personas, mediante los métodos GET de cada atributo.
Espero que con este ejemplo, entiendas mejor cuál es la función de los atributos, como usarlos y como nombrarlos:
public class Main {
public static void main(String[] args) {
//Creamos una Persona sin dar valores al constructor
Persona persona1 = new Persona();
//Otra Persona, dando valores al constructor
Persona persona2 = new Persona("Juan", 23, "Masculino", "74698762R", "646508723",
"juanito@aprenderaprogramar.com", "Azules", "Castaño", 65.8, 1.78);
//Mostramos valores
System.out.println("Datos de la Persona construida SIN valores:");
System.out.println("Nombre: " + persona1.getNombre());
System.out.println("Edad: " + persona1.getEdad());
System.out.println("Genero: " + persona1.getGenero());
System.out.println("DNI: " + persona1.getDni());
System.out.println("Telefono: " + persona1.getTelefono());
System.out.println("Email: " + persona1.getEmail());
System.out.println("Color de Ojos: " + persona1.getColorOjos());
System.out.println("Color del Pelo: " + persona1.getColorPelo());
System.out.println("Peso: " + persona1.getPeso() + "Kg");
System.out.println("Altura: " + persona1.getAltura() + "m");
System.out.println("\n"); //Salto de línea
System.out.println("Datos de la Persona construida CON valores:");
System.out.println("Nombre: " + persona2.getNombre());
System.out.println("Edad: " + persona2.getEdad());
System.out.println("Genero: " + persona2.getGenero());
System.out.println("DNI: " + persona2.getDni());
System.out.println("Telefono: " + persona2.getTelefono());
System.out.println("Email: " + persona2.getEmail());
System.out.println("Color de Ojos: " + persona2.getColorOjos());
System.out.println("Color del Pelo: " + persona2.getColorPelo());
System.out.println("Peso: " + persona2.getPeso() + "Kg");
System.out.println("Altura: " + persona2.getAltura() + "m");
}
private static class Persona {
private String nombre;
private int edad;
private String genero;
private String dni;
private String telefono;
private String email;
private String colorOjos;
private String colorPelo;
private double peso;
private double altura;
//Constructor sin parámetros, la Persona se construye sin atributos definidos
public Persona() {
//Para evitar valores null, inicializamos los atributos con valores por defecto
nombre = "";
edad = 0;
genero = "";
dni = "";
telefono = "";
email = "";
colorOjos = "";
colorPelo = "";
peso = 0.0;
altura = 0.0;
}
//Constructor que recibirá los datos necesarios para rellenar los atributos
public Persona(String nombrePer, int edadPer, String generoPer, String dniPer,
String telefonoPer, String emailPer, String colorOjosPer,
String colorPeloPer, double pesoPer, double alturaPer) {
nombre = nombrePer;
edad = edadPer;
genero = generoPer;
dni = dniPer;
telefono = telefonoPer;
email = emailPer;
colorOjos = colorOjosPer;
colorPelo = colorPeloPer;
peso = pesoPer;
altura = alturaPer;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombrePer) {
nombre = nombrePer;
}
public int getEdad() {
return edad;
}
public void setEdad(int edadPer) {
edad = edadPer;
}
public String getGenero() {
return genero;
}
public void setGenero(String generoPer) {
genero = generoPer;
}
public String getDni() {
return dni;
}
public void setDni(String dniPer) {
dni = dniPer;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefonoPer) {
telefono = telefonoPer;
}
public String getEmail() {
return email;
}
public void setEmail(String emailPer) {
email = emailPer;
}
public String getColorOjos() {
return colorOjos;
}
public void setColorOjos(String colorOjosPer) {
colorOjos = colorOjosPer;
}
public String getColorPelo() {
return colorPelo;
}
public void setColorPelo(String colorPeloPer) {
colorPelo = colorPeloPer;
}
public double getPeso() {
return peso;
}
public void setPeso(double pesoPer) {
peso = pesoPer;
}
public double getAltura() {
return altura;
}
public void setAltura(double alturaPer) {
altura = alturaPer;
}
}
}