0. Classes e Objetos
1. Visão geral da orientação a objetos
A Programação Orientada a Objetos Java (OOP) é um paradigma de programação poderoso baseado em conceitos básicos como objetos, classes, encapsulamento, herança e polimorfismo. Este paradigma de programação torna o código mais modular, sustentável, reutilizável e extensível.
1.1 Objetos e classes
Em Java, tudo é um objeto. Um objeto é a unidade básica de um programa que representa uma entidade ou conceito no mundo real. Por exemplo, podemos considerar um objeto carro simples:
class Car {
String color;
int speed;
void start() {
System.out.println("汽车启动了!");
}
void accelerate() {
System.out.println("汽车加速中...");
}
}
No exemplo, definimos uma Car
classe chamada que possui duas propriedades , cor ( color
) e velocidade ( ), e dois métodos ( e ). Esta classe descreve as características e comportamento do carro.speed
start()
accelerate()
1.2 Embalagem
O encapsulamento é um conceito-chave em OOP, que se refere ao encapsulamento de dados e métodos dentro de uma classe para proteger a segurança dos dados. Somente métodos de classe podem acessar e modificar dados de classe, código externo não pode acessar ou modificar dados diretamente. Isso melhora a capacidade de manutenção e a segurança do código. Vejamos um exemplo encapsulado:
class BankAccount {
private double balance;
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
public double getBalance() {
return balance;
}
}
No exemplo, balance
a propriedade é declarada como private
, o que significa que apenas BankAccount
métodos da classe podem acessá-la. O código externo deve operar e obter saldos de contas através de métodos públicos ( deposit()
e ).getBalance()
1.3 Herança
Herança é outro conceito-chave de OOP, que permite que uma classe (subclasse/classe derivada) herde as propriedades e métodos de outra classe (classe pai/classe base). As subclasses podem reutilizar o código da classe pai e adicionar suas próprias propriedades e métodos específicos. Isso ajuda na reutilização de código e na construção de hierarquias. Os exemplos são os seguintes:
class Animal {
void eat() {
System.out.println("动物吃东西");
}
}
class Dog extends Animal {
void bark() {
System.out.println("狗在叫");
}
}
No exemplo, Animal
a classe define eat()
métodos e Dog
a classe herda Animal
a classe e adiciona seus próprios bark()
métodos. Isso permite que Dog
a classe chame eat()
métodos e também bark()
métodos.
1.4 Polimorfismo
Polimorfismo é outro conceito poderoso de OOP, que permite que objetos de diferentes classes respondam de maneira diferente à mesma mensagem (chamada de método). O polimorfismo permite que um objeto execute comportamentos diferentes dependendo do seu tipo real. Os exemplos são os seguintes:
class Shape {
void draw() {
System.out.println("绘制形状");
}
}
class Circle extends Shape {
@Override
void draw() {
System.out.println("绘制圆形");
}
}
class Square extends Shape {
@Override
void draw() {
System.out.println("绘制正方形");
}
}
No exemplo, Shape
a classe define draw()
métodos, e ambas Circle
as Square
classes e herdam Shape
a classe e substituem draw()
os métodos. Isso significa que você pode criar objetos e chamar seus métodos, que executarão diferentes comportamentos de desenho dependendo do tipo real Shape
.Circle
Square
draw()
2. Classe
As classes são um dos blocos básicos de construção da programação orientada a objetos. As classes definem a estrutura e o comportamento dos objetos. Vamos ter uma compreensão profunda do conceito de classes, incluindo variáveis de membro, métodos de membro, modificadores de permissão, variáveis locais, o escopo efetivo de variáveis locais, a palavra-chave this e o construtor da classe.
2.1 Estrutura básica das aulas
A estrutura básica de uma classe geralmente inclui as seguintes partes:
public class ClassName {
// 成员变量(属性)
dataType variable1;
dataType variable2;
// 构造方法
public ClassName(parameters) {
// 构造方法的初始化代码
}
// 成员方法
returnType methodName(parameters) {
// 方法体
}
// 其他成员方法
}
1. Variáveis de membro (propriedades):
- Variáveis de membro são atributos de uma classe e são usadas para armazenar informações de estado de um objeto.
- Define as características ou dados de uma classe.
2. Método de construção:
- Um construtor é um método especial usado para inicializar propriedades de um objeto.
- Chamado automaticamente ao criar um objeto, geralmente usado para realizar as operações de inicialização necessárias.
- O nome do construtor é igual ao nome da classe.
3. Métodos de membros:
- Os métodos membros definem as operações que um objeto pode executar.
- Define o comportamento ou operação de uma classe.
2.2 Variáveis de membro
Variáveis-membro são propriedades de uma classe que armazena informações de estado sobre um objeto. Ao declarar variáveis-membro em uma classe, você pode usar diferentes modificadores de permissão, como private
, public
, protected
etc., para controlar sua acessibilidade. Por exemplo:
public class Student {
// 成员变量
public String name; // 公共成员变量
private int age; // 私有成员变量
protected double gpa; // 受保护的成员变量
}
2.3 Método de construção
Construtores são métodos especiais usados para inicializar objetos. Cada classe pode ter um ou mais construtores, sobrecarregados com diferentes listas de parâmetros. O nome do construtor deve ser igual ao nome da classe, não possui valor de retorno.
public class Student {
private String name;
private int age;
// 构造方法
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
No exemplo, Student
a classe possui um construtor que aceita nome e idade como parâmetros e é utilizado para inicializar as propriedades do objeto aluno.
2.4 Métodos de membros
Os métodos membros definem as operações que um objeto pode executar. Eles são usados para definir o comportamento ou operações de uma classe. A declaração de um método membro inclui o tipo de retorno, o nome do método, a lista de parâmetros e o corpo do método.
public class Calculator {
// 成员方法:加法
public int add(int num1, int num2) {
return num1 + num2;
}
// 成员方法:除法
public double divide(double dividend, double divisor) {
if (divisor != 0) {
return dividend / divisor;
} else {
System.out.println("除数不能为零");
return Double.NaN; // 返回NaN表示不是一个数字
}
}
}
No exemplo, Calculator
a classe define dois métodos membros, add()
e divide()
, para realizar operações de adição e divisão, respectivamente.
2.5 Modificadores de permissão
Java fornece diferentes modificadores de permissão para controlar a acessibilidade de variáveis de membros e métodos de membros:
public
: Pode ser acessado em qualquer lugar.private
: Só pode ser acessado dentro da turma.protected
: só pode ser acessado dentro do mesmo pacote ou subclasse.- Padrão (sem modificador): acessível apenas dentro do mesmo pacote.
2.6 Variáveis locais e escopo válido
Variáveis locais são variáveis temporárias declaradas dentro de um método ou bloco de código. Seu escopo é limitado dentro do bloco de código em que são declarados. Por exemplo:
public class Example {
public void someMethod() {
int x = 10; // 局部变量,只能在someMethod()方法内部访问
}
}
2.7 esta palavra-chave
this
A palavra-chave é usada para se referir à referência do objeto atual. Pode ser usado para distinguir variáveis de membro de variáveis locais, especialmente em métodos de membro. Por exemplo:
public class Person {
private String name;
public void setName(String name) {
// 使用this关键字来引用成员变量
this.name = name;
}
}
Nos exemplos, use this.name
para se referir a variáveis de membro para distinguir variáveis de membro de parâmetros de método name
.