博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java常识
阅读量:4688 次
发布时间:2019-06-09

本文共 2792 字,大约阅读时间需要 9 分钟。

抽象类和接口的区别

接口中只能包含抽象方法和静态常量

抽象类中可以有构造方法,成员变量,静态方法,抽象方法和非抽象方法
抽象类中可以没有抽象方法, 但是如果一个类中有抽象方法,那么这个类一定是抽象类
抽象方法不能有方法体
一个类只能继承一个类,但是可以实现多个接口

Java 多态

多态是同一个行为具有多个不同表现形式或形态的能力

多态就是同一个接口,使用不同的实例而执行不同操作
示例:
接口:打印机
实现类1:黑白打印机打印黑白效果
实现类2:彩色打印机打印彩色效果
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

SVN和git的区别

SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪

Git每一个开发人员的电脑上都有一个Local Repository,所以即使没有网络也一样可以Commit,查看历史版本记录,创建项 目分支等操作,等网络再次连接上Push到Server端。
最核心的区别Git是分布式的,而Svn不是分布的

AOP(面向切面编程)

package com.example.demoaspect.dy;

import org.aspectj.lang.JoinPoint;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

import java.util.Arrays;

/**

  • AOP:动态代理
  • 指定程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式.
  • 通知方法:
  • 前置通知:在目标方法运行之前运行
  • 后置通知:在目标方法运行结束运行(无论方法是正常结束还是异常结束)
  • 返回通知:在目标方法运行正常返回通知
  • 异常通知:在目标方法运行出现异常通知
  • 环绕通知:在目标方法运行执行前、后、异常时,都可以通知
  • */

@Aspect

@Component
public class LogAspect {

/** * 抽取公共的切入点表达式 * 1.本类的引用 * 2.其他的切面引用 */@Pointcut("execution(* com.example.demoaspect.dy.service.AopService.*(..))")public void pointCut() {}/** * 前置通知:在目标方法运行之前运行 * @param joinPoint joinPoint */@Before("pointCut()")public void logStart(JoinPoint joinPoint) {    Object[] args = joinPoint.getArgs();    System.out.println("" + joinPoint.getSignature().getName() + " logStart..." + Arrays.asList(args));}/** * 后置通知:在目标方法运行结束运行(无论方法是正常结束还是异常结束) * * @param joinPoint joinPoint */@After("pointCut()")public void logEnd(JoinPoint joinPoint) {    System.out.println("logEnd...");}/** * 返回通知:在目标方法运行正常返回通知 * * @param result result */@AfterReturning(value = "pointCut()", returning = "result")public void logReturn(Object result) {    System.out.println("logReturn...");}/** * 异常通知:在目标方法运行出现异常通知 * * @param exception 异常 */@AfterThrowing(value = "pointCut()", throwing = "exception")public void logThrown(Exception exception) {    System.out.println("logThrown...");}/** * 环绕通知:手动引导代码执行 * * @param pdj 可执行体 * @return return * @throws Throwable Throwable */@Around(value = "pointCut()")public Object logAround(ProceedingJoinPoint pdj) throws Throwable {    Object result = null;    try {        System.out.println("前置");        result = pdj.proceed();        System.out.println("后置");    } catch (Exception e) {        System.out.println("异常");    }    System.out.println("后置2");    return result;}

}

什么是反射

Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。

对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。

转载于:https://www.cnblogs.com/jis121/p/11088285.html

你可能感兴趣的文章
总结上海永辉云商高级前端职位面试题集
查看>>
中国计算机学会推荐国际学术会议和期刊目录
查看>>
各种可以远程
查看>>
分治法实现1-N的数字按字典序全排列组合 Java语言
查看>>
匹配两个空格之间的字符。。。
查看>>
CSS 文字溢出 变成省略号 ...
查看>>
Spring事务
查看>>
java编程基础(三)流程控制语句
查看>>
让数据库跑的更快的7个MySQL优化建议
查看>>
jquery 取id模糊查询
查看>>
解决在vue中,自用mask模态框出来后,下层的元素依旧可以滑动的问题
查看>>
修改node节点名称
查看>>
Java 文件下载
查看>>
图论——读书笔记 (深度优先搜索)
查看>>
PAT(B) 1014 福尔摩斯的约会(Java)
查看>>
PAT甲级题解-1123. Is It a Complete AVL Tree (30)-AVL树+满二叉树
查看>>
项目开发总结报告(GB8567——88)
查看>>
BZOJ1930: [Shoi2003]pacman 吃豆豆
查看>>
SSH加固
查看>>
端口扫描base
查看>>