Objetos e classes em Java
- Objeto em Java
- Aula em Java
- Variável de instância em Java
- Método em Java
- Exemplo de objeto e classe que mantém os registros dos alunos
- Objeto anônimo
Nesta página, aprenderemos sobre objetos e classes Java. Na técnica de programação orientada a objetos, projetamos um programa usando objetos e classes.
Um objeto em Java é uma entidade física e também lógica, enquanto uma classe em Java é apenas uma entidade lógica.
O que é um objeto em Java
Uma entidade que possui estado e comportamento é conhecida como objeto, por exemplo, cadeira, bicicleta, marcador, caneta, mesa, carro, etc. Pode ser físico ou lógico (tangível e intangível). O exemplo de objeto intangível é o sistema bancário.
Um objeto possui três características:
Por exemplo, Pen é um objeto. Seu nome é Reynolds; a cor é branca, conhecida como seu estado. É usado para escrever, então escrever é o seu comportamento.
Um objeto é uma instância de uma classe. Uma classe é um modelo ou projeto a partir do qual os objetos são criados. Portanto, um objeto é a instância (resultado) de uma classe.
Definições de objetos:
- Um objeto é uma entidade do mundo real .
- Um objeto é uma entidade de tempo de execução .
- O objeto é uma entidade que tem estado e comportamento .
- O objeto é uma instância de uma classe .
O que é uma classe em Java
Uma classe é um grupo de objetos que possuem propriedades comuns. É um modelo ou projeto a partir do qual os objetos são criados. É uma entidade lógica. Não pode ser físico.
Uma classe em Java pode conter:
Sintaxe para declarar uma classe:
class { field; method; } Variável de instância em Java
Uma variável criada dentro da classe, mas fora do método, é conhecida como variável de instância. A variável de instância não obtém memória em tempo de compilação. Ele obtém memória em tempo de execução quando um objeto ou instância é criado. É por isso que é conhecida como variável de instância.
Método em Java
Em Java, um método é como uma função usada para expor o comportamento de um objeto.
Vantagem do Método
- Reutilização de código
- Otimização de código
nova palavra-chave em Java
A palavra-chave new é usada para alocar memória em tempo de execução. Todos os objetos obtêm memória na área de memória Heap.
Exemplo de objeto e classe: main dentro da classe
Neste exemplo, criamos uma classe Student que possui dois membros de dados id e nome. Estamos criando o objeto da classe Student através da nova palavra-chave e imprimindo o valor do objeto.
Aqui, estamos criando um método main() dentro da classe.
Arquivo: Aluno.java
//Java Program to illustrate how to define a class and fields //Defining a Student class. class Student{ //defining fields int id;//field or data member or instance variable String name; //creating main method inside the Student class public static void main(String args[]){ //Creating an object or instance Student s1=new Student();//creating an object of Student //Printing values of the object System.out.println(s1.id);//accessing member through reference variable System.out.println(s1.name); } } Teste agora Saída:
0 null
Exemplo de objeto e classe: main fora da classe
No desenvolvimento em tempo real, criamos classes e utilizamos de outra classe. É uma abordagem melhor que a anterior. Vamos ver um exemplo simples, onde temos o método main() em outra classe.
Podemos ter várias classes em diferentes arquivos Java ou em um único arquivo Java. Se você definir várias classes em um único arquivo fonte Java, é uma boa ideia salvar o nome do arquivo com o nome da classe que possui o método main().
Arquivo: TestStudent1.java
//Java Program to demonstrate having the main method in //another class //Creating Student class. class Student{ int id; String name; } //Creating another class TestStudent1 which contains the main method class TestStudent1{ public static void main(String args[]){ Student s1=new Student(); System.out.println(s1.id); System.out.println(s1.name); } } Teste agora Saída:
0 null
3 maneiras de inicializar objeto
Existem 3 maneiras de inicializar objetos em Java.
- Por variável de referência
- Por método
- Por construtor
1) Exemplo de objeto e classe: inicialização por referência
Inicializar um objeto significa armazenar dados no objeto. Vejamos um exemplo simples onde inicializaremos o objeto através de uma variável de referência.
Arquivo: TestStudent2.java
class Student{ int id; String name; } class TestStudent2{ public static void main(String args[]){ Student s1=new Student(); s1.id=101; s1.name='Sonoo'; System.out.println(s1.id+' '+s1.name);//printing members with a white space } } Teste agora Saída:
101 Sonoo
Também podemos criar vários objetos e armazenar informações neles por meio de variáveis de referência.
Arquivo: TestStudent3.java
class Student{ int id; String name; } class TestStudent3{ public static void main(String args[]){ //Creating objects Student s1=new Student(); Student s2=new Student(); //Initializing objects s1.id=101; s1.name='Sonoo'; s2.id=102; s2.name='Amit'; //Printing data System.out.println(s1.id+' '+s1.name); System.out.println(s2.id+' '+s2.name); } } Teste agora Saída:
101 Sonoo 102 Amit
2) Exemplo de objeto e classe: inicialização através de método
Neste exemplo, estamos criando os dois objetos da classe Student e inicializando o valor desses objetos invocando o método insertRecord. Aqui, exibimos o estado (dados) dos objetos invocando o método displayInformation().
Arquivo: TestStudent4.java
class Student{ int rollno; String name; void insertRecord(int r, String n){ rollno=r; name=n; } void displayInformation(){System.out.println(rollno+' '+name);} } class TestStudent4{ public static void main(String args[]){ Student s1=new Student(); Student s2=new Student(); s1.insertRecord(111,'Karan'); s2.insertRecord(222,'Aryan'); s1.displayInformation(); s2.displayInformation(); } } Teste agora Saída:
111 Karan 222 Aryan
Como você pode ver na figura acima, o objeto obtém a memória na área de memória heap. A variável de referência refere-se ao objeto alocado na área de memória heap. Aqui, s1 e s2 são variáveis de referência que se referem aos objetos alocados na memória.
3) Exemplo de objeto e classe: inicialização através de um construtor
Aprenderemos sobre construtores em Java mais tarde.
Exemplo de objeto e classe: Funcionário
Vejamos um exemplo em que mantemos registros de funcionários.
Arquivo: TestEmployee.java
class Employee{ int id; String name; float salary; void insert(int i, String n, float s) { id=i; name=n; salary=s; } void display(){System.out.println(id+' '+name+' '+salary);} } public class TestEmployee { public static void main(String[] args) { Employee e1=new Employee(); Employee e2=new Employee(); Employee e3=new Employee(); e1.insert(101,'ajeet',45000); e2.insert(102,'irfan',25000); e3.insert(103,'nakul',55000); e1.display(); e2.display(); e3.display(); } } Teste agora Saída:
101 ajeet 45000.0 102 irfan 25000.0 103 nakul 55000.0
Exemplo de objeto e classe: retângulo
É dado outro exemplo que mantém os registros da classe Rectangle.
Arquivo: TestRectangle1.java
class Rectangle{ int length; int width; void insert(int l, int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle1{ public static void main(String args[]){ Rectangle r1=new Rectangle(); Rectangle r2=new Rectangle(); r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } Teste agora Saída:
55 45
Quais são as diferentes maneiras de criar um objeto em Java?
Existem muitas maneiras de criar um objeto em java. Eles são:
- Por nova palavra-chave
- Pelo método newInstance()
- Pelo método clone()
- Por desserialização
- Pelo método de fábrica etc.
Aprenderemos essas maneiras de criar objetos mais tarde.
Objeto anônimo
Anônimo significa simplesmente sem nome. Um objeto que não tem referência é conhecido como objeto anônimo. Ele pode ser usado apenas no momento da criação do objeto.
Se você precisar usar um objeto apenas uma vez, um objeto anônimo é uma boa abordagem. Por exemplo:
new Calculation();//anonymous object
Chamando método através de uma referência:
Calculation c=new Calculation(); c.fact(5);
Chamando método através de um objeto anônimo
new Calculation().fact(5);
Vamos ver o exemplo completo de um objeto anônimo em Java.
class Calculation{ void fact(int n){ int fact=1; for(int i=1;i<=n;i++){ fact="fact*i;" } system.out.println('factorial is '+fact); public static void main(string args[]){ new calculation().fact(5); calling method with anonymous object < pre> <p>Output:</p> <pre> Factorial is 120 </pre> <a id="objectbyonetype"></a> <h3>Creating multiple objects by one type only</h3> <p>We can create multiple objects by one type only as we do in case of primitives.</p> <p>Initialization of primitive variables:</p> <pre> int a=10, b=20; </pre> <p>Initialization of refernce variables:</p> <pre> Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects </pre> <p>Let's see the example:</p> <pre> //Java Program to illustrate the use of Rectangle class which //has length and width data members class Rectangle{ int length; int width; void insert(int l,int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle2{ public static void main(String args[]){ Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } </pre> <span> Test it Now </span> <p>Output:</p> <pre> 55 45 </pre> <h3>Real World Example: Account</h3> <p>File: TestAccount.java</p> <pre> //Java Program to demonstrate the working of a banking-system //where we deposit and withdraw amount from our account. //Creating an Account class which has deposit() and withdraw() methods class Account{ int acc_no; String name; float amount; //Method to initialize object void insert(int a,String n,float amt){ acc_no=a; name=n; amount=amt; } //deposit method void deposit(float amt){ amount=amount+amt; System.out.println(amt+' deposited'); } //withdraw method void withdraw(float amt){ if(amount <amt){ system.out.println('insufficient balance'); }else{ amount="amount-amt;" system.out.println(amt+' withdrawn'); } method to check the balance of account void checkbalance(){system.out.println('balance is: '+amount);} display values an object display(){system.out.println(acc_no+' '+name+' creating a test class deposit and withdraw testaccount{ public static main(string[] args){ a1="new" account(); a1.insert(832345,'ankit',1000); a1.display(); a1.checkbalance(); a1.deposit(40000); a1.withdraw(15000); }} < pre> <span> Test it Now </span> <p>Output:</p> <pre> 832345 Ankit 1000.0 Balance is: 1000.0 40000.0 deposited Balance is: 41000.0 15000.0 withdrawn Balance is: 26000.0 </pre></amt){></pre></=n;i++){> Criando vários objetos por apenas um tipo
Podemos criar vários objetos por um tipo apenas, como fazemos no caso de primitivos.
Inicialização de variáveis primitivas:
int a=10, b=20;
Inicialização de variáveis de referência:
Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects
Vejamos o exemplo:
//Java Program to illustrate the use of Rectangle class which //has length and width data members class Rectangle{ int length; int width; void insert(int l,int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle2{ public static void main(String args[]){ Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } Teste agora Saída:
55 45
Exemplo do mundo real: conta
Arquivo: TestAccount.java
//Java Program to demonstrate the working of a banking-system //where we deposit and withdraw amount from our account. //Creating an Account class which has deposit() and withdraw() methods class Account{ int acc_no; String name; float amount; //Method to initialize object void insert(int a,String n,float amt){ acc_no=a; name=n; amount=amt; } //deposit method void deposit(float amt){ amount=amount+amt; System.out.println(amt+' deposited'); } //withdraw method void withdraw(float amt){ if(amount <amt){ system.out.println(\'insufficient balance\'); }else{ amount="amount-amt;" system.out.println(amt+\' withdrawn\'); } method to check the balance of account void checkbalance(){system.out.println(\'balance is: \'+amount);} display values an object display(){system.out.println(acc_no+\' \'+name+\' creating a test class deposit and withdraw testaccount{ public static main(string[] args){ a1="new" account(); a1.insert(832345,\'ankit\',1000); a1.display(); a1.checkbalance(); a1.deposit(40000); a1.withdraw(15000); }} < pre> <span> Test it Now </span> <p>Output:</p> <pre> 832345 Ankit 1000.0 Balance is: 1000.0 40000.0 deposited Balance is: 41000.0 15000.0 withdrawn Balance is: 26000.0 </pre></amt){> =n;i++){>