在 Java 中,抽象类是一种特殊的类,它不能被实例化,但可以被子类继承。抽象类的主要目的是提供一种模板,定义一些通用的方法和属性,同时允许子类根据需要实现具体的逻辑。抽象类是实现数据抽象的一种重要手段,通过隐藏复杂的代码实现细节,只向用户提供必要的信息。
## 抽象类的特点
1. **模板**:
   - 抽象类提供了一种模板,定义了一些方法和属性,但这些方法的具体实现可以由子类完成。
   - 开发者可以隐藏复杂的代码实现,只向用户提供必要的信息。
2. **松耦合**:
   - 数据抽象通过减少依赖关系,实现了松耦合,使得系统更加灵活和可维护。
3. **代码复用**:
   - 使用抽象类可以节省时间,避免重复编写相同的代码。抽象方法可以在需要的地方被调用。
4. **抽象**:
   - 抽象类帮助开发者隐藏代码的复杂性,只保留项目中必要的特性,使用户更容易理解和使用。
5. **动态解析**:
   - 通过支持动态方法解析,开发者可以使用一个抽象方法解决多种问题。
## 抽象类的声明语法
要声明一个抽象类,需要使用 `abstract` 关键字,并且可以包含抽象方法和非抽象方法。
```java
 abstract class  {
    // 数据成员
    // 语句
    // 方法
}
  抽象类的示例
// 抽象类 Person
package abstraction;
public abstract class Person {
    private String name;
    private String gender;
    public Person(String name, String gender) {
        this.name = name;
        this.gender = gender;
    }
    public abstract void work();
    @Override
    public String toString() {
        return "Name=" + this.name + "::Gender=" + this.gender;
    }
    public void changeName(String newName) {
        this.name = newName;
    }
    public void exam() {
        // TODO Auto-generated method stub
    }
    public void office() {
        // TODO Auto-generated method stub
    }
}
// 子类 Employee
package abstraction;
public class Employee extends Person {
    private int empId;
    public Employee(String name, String gender, int empId) {
        super(name, gender);
        this.empId = empId;
    }
    public void office() {
        if (empId == 0) {
            System.out.println("Employee Logged Out");
        } else {
            System.out.println("Employee Logged In");
        }
    }
    public static void main(String[] args) {
        Person employee = new Employee("Pavithra", "Female", 1094826);
        employee.office();
        employee.changeName("Pavithra Tripathy");
        System.out.println(employee.toString());
    }
    @Override
    public void work() {
        // TODO Auto-generated method stub
    }
}
输出
Employee Logged In
Name=Pavithra Tripathy::Gender=Female
声明抽象类的规则
- 必须使用abstract关键字:
- 声明抽象类时,必须使用 abstract关键字。
- 不能直接实例化:
- 抽象类不能直接实例化,只能通过子类实例化。
- 至少包含一个抽象方法:
- 抽象类中可以包含抽象方法和非抽象方法,但至少需要有一个抽象方法。
- 可以包含构造器和静态方法:
- 抽象类可以包含构造器和静态方法。
实现抽象的两种方式
- 抽象类:
- 使用抽象类实现数据抽象,定义一些通用的方法和属性,具体实现由子类完成。
- 接口:
- 接口也是一种实现抽象的方式,定义方法签名但不提供具体实现。
接口与抽象类的区别
| 特点 | 接口 | 抽象类 | 
|---|---|---|
| 关键字 | interface | abstract | 
| 实现方式 | 子类实现接口 | 子类继承抽象类 | 
| 多重实现 | 可以实现多个接口 | 只能继承一个抽象类 | 
| 支持多重继承 | 支持 | 不支持 | 
抽象类的优点
- 代码简洁:
- 抽象类有助于编写更简洁的代码。
- 避免代码重复:
- 抽象类避免了代码重复,提高了代码的可维护性。
- 代码复用:
- 抽象类提供了代码复用的机制,子类可以继承和重用父类的方法和属性。
- 内部实现变化不影响外部:
- 抽象
相关文章
暂无评论...
 
                             
                         
                            