Alocação de memória

Galera, td bom?
Sou novo no mundo Java, estou gostando muito da linguagem e realmente surgem um turbilhão de dúvidas!
Estou com a seguinte dúvida :roll:
Quando por exemplo vamos instanciar um classe de outro pacote seguindo a seguinte sintaxe:

[code]//classe a ser instanciada.
Car.java
package carros;
public class Car{
int numPortas;
public void ligarCarro(){

}
}

//Classe testadora
Teste.java
package teste;
import carros.Car;
class Teste{
public static void main (String [] args){
Car c=new Car();
}
}
[/code]

Minha dúvida é se quando pedimos pra JVM alocar um espaço na memória heap para um objeto da classe Car, ele irá alocar apenas a o método ligarCarro(), pois é o único definido como public, já a VI numPortas não seria alocada na heap por ser default?
Me desculpem se fui confuso…

Abraços,
8)

A JVM vai alocar e iniciar o objeto com todos seus atributos, mesmo que não utilizados.

Métodos são colocados em “outro lugar” da memoria. Não fica junto dos objetos.

Um detalhe interessante:
Métodos não ocupam memória.

A única coisa que ocupa memória são os dados.
No caso, o inteiro (4 bytes) para o número de portas.

Galera valeu mesmo pela ajuda, deu uma bela clareada aqui 8)