Oi, @XR727. Bem vindo ao GUJ!
Entendi sua dúvida. Então, deixa eu te explicar: Você precisa estudar a base da programação orientada a objetos. O que você acabou de ver é que você pode usar outras classes como atributo/variável. Você vai ver, mais pra frente, que o que você tá usando é um objeto. Logo, a base da POO.
Um dos pilares da POO é abstração. Tente imaginar o mundo real dentro da POO. Vamos criar uma situação onde uma pessoa quer comprar um carro.
De modo muito simplificado, simplista e didático: dentro do mundo POO, tudo se trata de objetos. Logo, tanto a pessoa quanto o carro serão objetos. De alguma forma, eles estarão ligados (afinal, ele está comprando um carro). Essa ligação entre eles será o contrato. Você consegue imaginar, na vida real, uma pessoa indo comprar um carro e assinando um contrato?
Objetos podem (e é raro não ter) terem características. No nosso exemplo, todo objeto pessoa terá como característica um CPF, um nome, uma idade e um contrato, relativo ao carro que ele comprará.
Okay, então sabemos que:
- Dentro do mundo POO, tudo é um objeto. Então, uma pessoa também será um objeto.
- Esse objeto pode ter características, e a partir daqui as características serão chamadas de atributos.
Como podemos representar um objeto Pessoa com as características CPF, idade, nome e contrato? Precisamos criar a classe Pessoa para isso. Em exemplo:
public class Pessoa {
String cpf; // representa o cpf da pessoa
String nome; // representa o nome
int idade; // representa a idade
Contrato contrato; //representa o contrato
}
O que tem de diferente ali é o Contrato contrato, certo? Isso por que Contrato também é um objeto, e sendo um objeto, ele tem uma classe que a representa. Essa classe é:
public class Contrato {
Pessoa pessoa;
Carro carro;
}
Ou seja, todo objeto Contrato tem como características ter uma Pessoa e um Carro. Faz sentido, não faz? Afinal, na vida real (de modo básico) o Contrato é um papel que diz que X carro pertence a Y pessoa.
E o objeto carro? Será representado pela classe Carro onde terá os atributos que você definir.
Além de atributos, toda classe pode conter métodos. Por exemplo, você faria um método “assinarContrato()” onde você iria iniciar um novo contrato atribuindo o Carro à Pessoa.
Deu pra entender melhor?
Qualquer dúvida, estou à disposição.
[]'s