public abstract class Animal {
// 类体内容
}
public abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name); // 必须调用父类构造方法
}
}
public abstract class Payment {
// 通用方法,子类直接继承使用
protected boolean validateParameters(Map<String, Object> params) {
// 参数验证逻辑
return true;
}
protected void logTransaction(String transactionId) {
// 日志记录逻辑
}
// 抽象方法,子类必须实现
public abstract boolean processPayment(double amount);
}
// 抽象类示例 public abstract class Animal {
protected String name; // 实例变量
private int age; // 私有变量
public Animal(String name) {
this.name = name; // 构造方法
}
public abstract void makeSound();
public void sleep() { // 具体方法
System.out.println("Sleeping...");
}
}
// 接口示例 public interface Flyable {
int MAX_HEIGHT = 1000; // 默认public static final
void fly(); // 默认public abstract
// Java 8之后可以定义默认方法
default void land() {
System.out.println("Landing...");
}
}
public abstract class JdbcTemplate {
// 模板方法定义了固定流程
public final List<?> executeQuery(String sql) {
// 1. 获取连接
Connection conn = getConnection();
// 2. 创建语句
PreparedStatement stmt = conn.prepareStatement(sql);
// 3. 执行查询
ResultSet rs = stmt.executeQuery();
// 4. 映射结果 - 这部分由子类实现
List<?> result = mapResults(rs);
// 5. 释放资源
closeResources(conn, stmt, rs);
return result;
}
// 抽象方法,子类必须实现
protected abstract List<?> mapResults(ResultSet rs);
}
// 抽象图形类 public abstract class Shape {
protected String color;
public Shape(String color) {
this.color = color;
}
// 具体方法
public String getColor() {
return color;
}
// 抽象方法
public abstract double calculateArea();
public abstract double calculatePerimeter();
// 具体方法
public void displayInfo() {
System.out.println("图形颜色: " + color);
System.out.println("面积: " + calculateArea());
System.out.println("周长: " + calculatePerimeter());
}
}
// 具体子类 public class Circle extends Shape {
private double radius;
public Circle(String color, double radius) {
super(color);
this.radius = radius;
}
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
@Override
public double calculatePerimeter() {
return 2 * Math.PI * radius;
}
}
你可能想看: