[TOC]
# 包、接口、类、对象和切面案例代码
>在下面的代码中,使用了包、接口、类、对象和切面等概念,并对每个概念进行了详细的注释说明。
```
package com.example.package;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
// 定义切面。使用了AspectJ注解@Aspect和Spring注解@Component。其中,使用@Before注解定义了一个前置通知,切点为com.example.package.MyClass中的所有方法,当这些方法被调用时,logBefore()方法会被先调用,输出方法名和相关信息。
@Aspect
@Component
public class LoggingAspect {
// 前置通知
@Before("execution(* com.example.package.MyClass.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Method " + joinPoint.getSignature().getName() + " is called.");
}
}
// 定义接口
public interface MyInterface {
public void doSomething();
}
// 定义抽象类
public abstract class MyAbstractClass {
protected String name;
public MyAbstractClass(String name) {
this.name = name;
}
public abstract void sayHello();
}
// 定义子类继承抽象类并实现接口
public class MyClass extends MyAbstractClass implements MyInterface {
private int age;
public MyClass(String name, int age) {
super(name);
this.age = age;
}
public void sayHello() {
System.out.println("Hello, " + name + ", age " + age);
}
public void doSomething() {
System.out.println("Doing something...");
}
// 对象封装
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// 对象重用
public void doSomethingElse() {
System.out.println("Doing something else...");
}
// 多态
public void doSomething(int num) {
System.out.println("Doing something " + num + " times...");
}
}
// 主程序
public class Main {
public static void main(String[] args) {
// 创建对象
MyClass obj = new MyClass("John", 25);
// 调用对象方法
obj.sayHello(); // 输出 Hello, John, age 25
obj.doSomething(); // 输出 Doing something...
// 对象封装
obj.setAge(30);
System.out.println("Age: " + obj.getAge()); // 输出 Age: 30
// 对象重用
MyInterface obj1 = obj;
obj1.doSomething(); // 输出 Doing something...
((MyClass)obj1).doSomethingElse(); // 输出 Doing something else...
// 多态
MyAbstractClass obj2 = obj;
obj2.sayHello(); // 输出 Hello, John, age 30
obj2.doSomething(3); // 输出 Doing something 3 times...
```
- 系统设计
- 需求分析
- 概要设计
- 详细设计
- 逻辑模型设计
- 物理模型设计
- 产品设计
- 数据驱动产品设计
- 首页
- 逻辑理解
- 微服务架构的关系数据库优化
- Java基础架构
- 编程范式
- 面向对象编程【模拟现实】
- 泛型编程【参数化】
- 函数式编程
- 响应式编程【异步流】
- 并发编程【多线程】
- 面向切面编程【代码复用解耦】
- 声明式编程【注解和配置】
- 函数响应式编程
- 语法基础
- 包、接口、类、对象和切面案例代码
- Springboot按以下步骤面向切面设计程序
- 关键词
- 内部类、匿名类
- 数组、字符串、I/O
- 常用API
- 并发包
- XML
- Maven 包管理
- Pom.xml
- 技术框架
- SpringBoot
- 项目文件目录
- Vue
- Vue项目文件目录
- 远程组件
- 敏捷开发前端应用
- Pinia Store
- Vite
- Composition API
- uniapp
- 本地方法JNI
- 脚本机制
- 编译器API
- 注释
- 源码级注释
- Javadoc
- 安全
- Swing和图形化编程
- 国际化
- 精实或精益
- 精实软件数据库设计
- 精实的原理与方法
- 项目
- 零售软件
- 扩展
- 1001_docker 示例
- 1002_Docker 常用命令
- 1003_微服务
- 1004_微服务数据模型范式
- 1005_数据模型
- 1006_springCloud
- AI 流程图生成
- Wordpress_6
- Woocommerce_7
- WooCommerce常用的API和帮助函数
- WooCommerce的钩子和过滤器
- REST API
- 数据库API
- 模板系统
- 数据模型
- 1.Woo主题开发流程
- Filter
- Hook
- 可视编辑区域的函数工具
- 渲染字段函数
- 类库和框架
- TDD 通过测试来驱动开发
- 编程范式对WordPress开发
- WordPress和WooCommerce的核心代码类库组成
- 数据库修改
- 1.WP主题开发流程与时间规划
- moho
- Note 1
- 基础命令