在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。

简介: 在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。

通过类可以创建对象,即类的实例。下面是一个简单的 Java 类的例子:

```java
public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
    
    public int getAge() {
        return age;
    }
    
    public void displayInfo() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
    
    public static void main(String[] args) {
        Person person = new Person("Alice", 25);
        person.displayInfo();
        
        person.setAge(30);
        person.displayInfo();
    }
}
```

 

在上面的例子中,`Person` 类包含了两个私有字段 `name` 和 `age`,以及构造方法、设置和获取字段值的方法以及显示信息的方法。在 `main` 方法中,创建了一个 `Person` 对象并调用了相关方法来操作对象。

 

类的成员访问修饰符

Java 中的类成员(字段和方法)可以使用不同的访问修饰符来控制访问权限:

 

- `public`:可以被任意类访问。

- `protected`:可以被同一包内的类和子类访问。

- `default`:没有修饰符,可以被同一包内的类访问。

- `private`:只能被同一类内部访问。

 

类的继承

Java 支持单继承,一个子类只能继承一个父类,使用 `extends` 关键字来实现继承。例如:

 

```java
public class Student extends Person {
    private String studentId;
    
    public Student(String name, int age, String studentId) {
        super(name, age); // 调用父类构造方法
        this.studentId = studentId;
    }
    
    public String getStudentId() {
        return studentId;
    }
    
    public void displayInfo() {
        System.out.println("Name: " + getName() + ", Age: " + getAge() + ", Student ID: " + studentId);
    }
}
```

 

类的多态

Java 中的多态性是指同一个方法调用可以在不同的对象上产生不同的行为。实现多态性的方式有方法重载和方法重写。方法重载是指在一个类中可以定义多个同名方法,但参数列表不同;方法重写是指子类重新定义父类的方法。

 

```java
public class Animal {
    public void makeSound() {
        System.out.println("Animal makes sound");
    }
}
 
public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog barks");
    }
}
 
public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Cat meows");
    }
}
```

 

通过上面的例子,可以看到不同的动物类对象调用 `makeSound` 方法时产生不同的行为。

 

Java 中类的概念非常重要,它是面向对象编程的核心。通过类的定义和使用,可以实现代码的封装、继承和多态,提高代码的可读性和可维护性。

 

抽象类和接口

- 抽象类是不能被实例化的类,用 `abstract` 关键字来定义。抽象类可以包含抽象方法和非抽象方法,子类必须实现抽象方法。例如:

```java
public abstract class Shape {
    public abstract double area();
}
 
public class Circle extends Shape {
    private double radius;
 
    public Circle(double radius) {
        this.radius = radius;
    }
 
    @Override
    public double area() {
        return Math.PI * radius * radius;
    }
}
```

- 接口是一种抽象类型,它定义了一组方法但没有实现。类通过 `implements` 关键字来实现接口,并实现接口定义的方法。一个类可以实现多个接口。例如:

 

```java
public interface Drawable {
    void draw();
}
 
public class Rectangle implements Drawable {
    @Override
    public void draw() {
        System.out.println("Drawing rectangle");
    }
}
```

类的静态成员

- 在 Java 中,可以使用 `static` 关键字来定义静态成员(字段和方法)。静态成员属于类而不是对象,可以通过类名来访问。静态方法中不能直接访问非静态成员,但可以访问静态成员。例如:

 

```java
public class Counter {
    private static int count = 0;
 
    public Counter() {
        count++;
    }
 
    public static int getCount() {
        return count;
    }
}
```

 

类的封装

- 封装是面向对象编程的重要特性,它将数据(字段)和方法(行为)打包在一起,对外部隐藏对象的内部实现细节。在 Java 中,可以使用 `private` 访问修饰符来实现封装。例如:

```java
public class Person {
    private String name;
    private int age;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        if (age >= 0) {
            this.age = age;
        } else {
            System.out.println("Age cannot be negative");
        }
    }
}
```

 

以上是关于 Java 类的一些补充内容,包括抽象类、接口、静态成员和封装。这些特性都是面向对象编程中非常重要的概念,能够帮助我们更好地组织和管理代码。

相关文章
|
21天前
|
前端开发 JavaScript Java
java常用数据判空、比较和类型转换
本文介绍了Java开发中常见的数据处理技巧,包括数据判空、数据比较和类型转换。详细讲解了字符串、Integer、对象、List、Map、Set及数组的判空方法,推荐使用工具类如StringUtils、Objects等。同时,讨论了基本数据类型与引用数据类型的比较方法,以及自动类型转换和强制类型转换的规则。最后,提供了数值类型与字符串互相转换的具体示例。
|
1月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
28天前
|
JSON Java 程序员
Java|如何用一个统一结构接收成员名称不固定的数据
本文介绍了一种 Java 中如何用一个统一结构接收成员名称不固定的数据的方法。
26 3
|
1月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
41 4
|
1月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
37 4
|
28天前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
26 1
|
设计模式 Java
Java 模板设计模式的应用场景
模板设计模式在项目中的应用场景
170 0
|
设计模式 Java
java神秘的抽象类,模板设计模式
1.概述 抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。 一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。 抽象类可以包含抽象方法和非抽象方法。 抽象类一般会被继承,由其子类实现具体的抽象方法👴🏻
117 0
|
设计模式 Java
JAVA 模板设计模式
JAVA 模板设计模式
128 0
|
2天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者