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

相关文章
|
2天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
20天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
41 17
|
12天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
16天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
56 4
|
16天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
34 2
|
Java
【JavaSE】成员方法快速入门和方法的调用机制原理
【JavaSE】成员方法快速入门和方法的调用机制原理
263 0
【JavaSE】成员方法快速入门和方法的调用机制原理
|
6天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
|
14天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
5天前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
|
5天前
|
Java 开发者
Java多线程编程的艺术与实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的技术文档,本文以实战为导向,通过生动的实例和详尽的代码解析,引领读者领略多线程编程的魅力,掌握其在提升应用性能、优化资源利用方面的关键作用。无论你是Java初学者还是有一定经验的开发者,本文都将为你打开多线程编程的新视角。 ####