Construtores Java
Construtores Java
Neste tutorial, aprenderemos sobre construtores Java, seus tipos e como usá-los com a ajuda de exemplos.
O que é um Construtor?
Um construtor em Java é semelhante a um método que é invocado quando um objeto da classe é criado.
Ao contrário dos métodos Java, um construtor tem o mesmo nome da classe e não possui nenhum tipo de retorno. Por exemplo,
class Test { Test() { // constructor body } }
Aqui,
Test()
é um construtor. Tem o mesmo nome da classe e não tem um tipo de retorno. Leitura recomendada: Por que os construtores não retornam valores
Exemplo 1:Construtor Java
class Main {
private String name;
// constructor
Main() {
System.out.println("Constructor Called:");
name = "Programiz";
}
public static void main(String[] args) {
// constructor is invoked while
// creating an object of the Main class
Main obj = new Main();
System.out.println("The name is " + obj.name);
}
}
Saída :
Constructor Called: The name is Programiz
No exemplo acima, criamos um construtor chamado
Main()
. Dentro do construtor, estamos inicializando o valor do name variável. Observe a instrução de criação de um objeto da classe Main classe.
Main obj = new Main();
Aqui, quando o objeto é criado, o
Main()
construtor é chamado. E o valor do nome variável é inicializada. Portanto, o programa imprime o valor do nome variáveis como
Programiz
. Tipos de construtor
Em Java, os construtores podem ser divididos em 3 tipos:
- Construtor sem Arg
- Construtor parametrizado
- Construtor padrão
1. Construtores Java No-Arg
Semelhante aos métodos, um construtor Java pode ou não ter parâmetros (argumentos).
Se um construtor não aceita nenhum parâmetro, ele é conhecido como um construtor sem argumentos. Por exemplo,
private Constructor() {
// body of the constructor
}
Exemplo 2:construtor sem argumento privado Java
class Main {
int i;
// constructor with no parameter
private Main() {
i = 5;
System.out.println("Constructor is called");
}
public static void main(String[] args) {
// calling the constructor without any parameter
Main obj = new Main();
System.out.println("Value of i: " + obj.i);
}
}
Saída :
Constructor is called Value of i: 5
No exemplo acima, criamos um construtor
Main()
. Aqui, o construtor não aceita nenhum parâmetro. Por isso, é conhecido como um construtor sem argumentos. Observe que declaramos o construtor como privado.
Uma vez que um construtor é declarado
private
, ele não pode ser acessado de fora da classe. Portanto, é proibido criar objetos de fora da classe usando o construtor privado. Aqui, estamos criando o objeto dentro da mesma classe. Assim, o programa é capaz de acessar o construtor. Para saber mais, visite Java Implement Private Constructor.
No entanto, se quisermos criar objetos fora da classe, precisamos declarar o construtor como
public
. Exemplo 3:construtores sem argumentos públicos Java
class Company {
String name;
// public constructor
public Company() {
name = "Programiz";
}
}
class Main {
public static void main(String[] args) {
// object is created in another class
Company obj = new Company();
System.out.println("Company name = " + obj.name);
}
}
Saída :
Company name = Programiz
Leitura recomendada: Modificador de acesso Java
2. Construtor parametrizado Java
Um construtor Java também pode aceitar um ou mais parâmetros. Tais construtores são conhecidos como construtores parametrizados (construtor com parâmetros).
Exemplo 4:construtor parametrizado
class Main {
String languages;
// constructor accepting single value
Main(String lang) {
languages = lang;
System.out.println(languages + " Programming Language");
}
public static void main(String[] args) {
// call constructor by passing a single value
Main obj1 = new Main("Java");
Main obj2 = new Main("Python");
Main obj3 = new Main("C");
}
}
Saída :
Java Programming Language Python Programming Language C Programming Language
No exemplo acima, criamos um construtor chamado
Main()
. Aqui, o construtor recebe um único parâmetro. Observe a expressão,
Main obj1 = new Main("Java");
Aqui, estamos passando o valor único para o construtor. Com base no argumento passado, a variável de linguagem é inicializada dentro do construtor.
3. Construtor padrão Java
Se não criarmos nenhum construtor, o compilador Java criará automaticamente um construtor no-arg durante a execução do programa. Esse construtor é chamado de construtor padrão.
Exemplo 5:construtor padrão
class Main {
int a;
boolean b;
public static void main(String[] args) {
// A default constructor is called
Main obj = new Main();
System.out.println("Default Value:");
System.out.println("a = " + obj.a);
System.out.println("b = " + obj.b);
}
}
Saída :
a = 0 b = false
Aqui, não criamos nenhum construtor. Portanto, o compilador Java cria automaticamente o construtor padrão.
O construtor padrão inicializa quaisquer variáveis de instância não inicializadas com valores padrão.
Tipo | Valor padrão |
---|---|
boolean | falso |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
char | \u0000 |
float | 0,0f |
double | 0,0d |
object | Referência nula |
No programa acima, as variáveis a e b são inicializados com o valor padrão 0 e
false
respectivamente. O programa acima é equivalente a:
class Main {
int a;
boolean b;
// a private constructor
private Main() {
a = 0;
b = false;
}
public static void main(String[] args) {
// call the constructor
Main obj = new Main();
System.out.println("Default Value:");
System.out.println("a = " + obj.a);
System.out.println("b = " + obj.b);
}
}
A saída do programa é a mesma do Exemplo 5.
Observações importantes sobre construtores Java
- Os construtores são invocados implicitamente quando você instancia objetos.
- As duas regras para criar um construtor são:
O nome do construtor deve ser o mesmo da classe.
Um construtor Java não deve ter um tipo de retorno. - Se uma classe não tiver um construtor, o compilador Java cria automaticamente um construtor padrão durante o tempo de execução. O construtor padrão inicializa variáveis de instância com valores padrão. Por exemplo, o
int
variável será inicializada para0
- Tipos de construtor:
Construtor sem Arg - um construtor que não aceita nenhum argumento
Construtor parametrizado - um construtor que aceita argumentos
Construtor padrão - um construtor que é criado automaticamente pelo compilador Java se não for definido explicitamente. - Um construtor não pode ser
abstract
oustatic
oufinal
. - Um construtor pode ser sobrecarregado, mas não pode ser substituído.
Sobrecarga de construtores em Java
Semelhante à sobrecarga do método Java, também podemos criar dois ou mais construtores com parâmetros diferentes. Isso é chamado de sobrecarga de construtores.
Exemplo 6:sobrecarga do construtor Java
class Main {
String language;
// constructor with no parameter
Main() {
this.language = "Java";
}
// constructor with a single parameter
Main(String language) {
this.language = language;
}
public void getName() {
System.out.println("Programming Langauage: " + this.language);
}
public static void main(String[] args) {
// call constructor with no parameter
Main obj1 = new Main();
// call constructor with a single parameter
Main obj2 = new Main("Python");
obj1.getName();
obj2.getName();
}
}
Saída :
Programming Language: Java Programming Language: Python
No exemplo acima, temos dois construtores:
Main()
e Main(String language)
. Aqui, tanto o construtor inicializam o valor da variável language com valores diferentes. Com base no parâmetro passado durante a criação do objeto, diferentes construtores são chamados e diferentes valores são atribuídos.
Também é possível chamar um construtor de outro construtor. Para saber mais, visite Java Call One Constructor from Another.
Observação :Usamos
this
palavra-chave para especificar a variável da classe. Para saber mais sobre this
palavra-chave, visite Java esta palavra-chave. Java