1.  abstract:意为抽象,在Java中可以修饰方法或者类

(1)修饰方法,这个方法是抽象方法,无方法体,这个类一定是抽象类,这个类的子类必须实现这个抽象方法;

(2)修饰类,这个类一定是抽象类,但是不一定有抽象方法;

2.  static:意为静态的,在Java中修饰方法或者变量

2.1  按照是否静态对类成员变量分,有两种,被static修饰即叫静态变量/类变量;另一种是实例变量,两者区别:

(1)对于静态变量在内存中只有一个拷贝(节省内存),JVM只为分配一次内存,在加载的过程中完成静态变量的内存分配,通过类名调用(推荐),也可以使用对象名调用(不推荐);

(2)对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量在内存中有多个拷贝,互不影响(灵活);

(3)静态变量使用场景:在对象之间共享时,方便访问变量时;

2.2  static修饰的方法不能被重写; 静态方法独立于任何实例,所以必须得有方法体(必须实现);

(1)修饰的方法可以直接通过类名调用;被所有对象共享;

(2)静态只能访问静态,非静态既可以访问静态也可以访问非静态;

2.3  不加static修饰的成员是对象成员,为每一个对象所有,加static的成员为所有对象共有;

3.  abstract 和 static 修饰方法:

(1) abstract无方法体,static有方法体,静态方法独立于任何实例,所以必须得有方法体(必须实现),不像是abstract(由子类实现);

(2) static修饰的方法优先于对象存在,所以修饰的方法里面不能有this,super关键字,this和super代表的对象此时并不存在;

(4) static修饰的方法通过类名(子类名)直接调用,通过类对象名(子类对象名)调用不报错但有警告;

4.   abstract和static不能同时存在: abstract修饰的方法无方法体,不能随着类的加载而加载到方法区,static修饰的方法随着类的加载会被加载到类的方法区;

abstract还不能与final同时存在,因为final修饰的方法是最终方法,无法被重写;

abstract不能与private同时存在,因为private修饰的方法不可见,无法重写;

!!!个人(新手)整理,定有遗漏或存在错误,望指正,抱拳 老铁!

关键字abstract和static总结的更多相关文章

  1. 【转】Java关键字final、static使用总结

    转自:http://lavasoft.blog.51cto.com/62575/18771/   Java关键字final.static使用总结   一.final        根据程序上下文环境, ...

  2. Java关键字final、static使用总结

    Java关键字final.static使用总结   一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...

  3. 转!Java关键字final、static使用总结

    Java关键字final.static使用总结   一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可 ...

  4. Java关键字final、static使用总结(转)

    Java关键字final.static使用总结   一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...

  5. Java关键字final、static总结

    对Java关键字Final和Static进行总结. 一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...

  6. java关键字-abstract

    抽象:不具体,看不明白. 抽象类表象体现. 在不断抽取过程中,将共性内容中的方法声明抽取,但是方法不一样,没有抽取,这时抽取到的方法,并不具体,需要被指定关键字abstract所标示,声明为抽象方法. ...

  7. C语言中关键字auto、static、register、const、volatile、extern的作用

    原文:C语言中关键字auto.static.register.const.volatile.extern的作用 关键字auto.static.register.const.volatile.exter ...

  8. Java基础(basis)-----关键字final和static的作用

       1.关键字final      final修饰类:这个类就不能被继承      final修饰方法:不能被重写      final修饰属性:此属性就是一个常量,一旦初始化后,不可再被赋值.习惯 ...

  9. Java关键字final、static使用总结(转)

    原文链接:Java关键字final, static一些要点 1. final   final类不能被继承,没有子类,final类中的方法默认是final的 final方法不能被子类的方法复盖,但可以被 ...

随机推荐

  1. 原型和原型链 prototype和proto的区别

    原型 原型是function对象下的属性,它定义了构造函数的共同祖先,也就是一个父子级的关系,子对象会继承父对象的方法和属性 prototype是函数下的属性,对象想要查看原型使用隐式属性__Prot ...

  2. 【JVM进阶之路】十四:类加载器和类加载机制

    在上一章里,我们已经学习了类加载的过程,我们知道在加载阶段需要"通过一个类的全限定名来获取描述该类的二进制字节流",而来完成这个工作的就是类加载器(Class Loader). 1 ...

  3. Go语言web开发---Beego的session

    一.简介 Session是一段保存在服务器上的信息,当客户端第一次访问服务器时创建Session,同时也会创建一个名为beegosessionID,值为创建的Session的id的Cookie. 这个 ...

  4. maven把依赖打进jar包

    1.把依赖打进sigma-api的jar包 <?xml version="1.0" encoding="UTF-8"?> <project x ...

  5. 3D惯导Lidar仿真

    3D惯导Lidar仿真 LiDAR-Inertial 3D Plane Simulator 摘要 提出了最*点*面表示的形式化方法,并分析了其在三维室内同步定位与映射中的应用.提出了一个利用最*点*面 ...

  6. 关于Numba的线程实现的说明

    关于Numba的线程实现的说明 由Numbaparallel目标执行的工作由Numba线程层执行.实际上,"线程层"是Numba内置库,可以执行所需的并发执行.在撰写本文时,有三个 ...

  7. 大规模数据处理Apache Spark开发

    大规模数据处理Apache Spark开发 Spark是用于大规模数据处理的统一分析引擎.它提供了Scala.Java.Python和R的高级api,以及一个支持用于数据分析的通用计算图的优化引擎.它 ...

  8. runtime系统的Cello

    runtime系统的Cello 通过充当一个现代的.功能强大的runtime系统,Cello使许多以前在C中不切实际或笨拙的事情变得简单,例如: 通用数据结构 多态函数 接口/类型类 构造函数/析构函 ...

  9. Java设计模式:23种设计模式全面解析(超级详细)以及在源码中的应用

    从网络上找的设计模式, 很全面,只要把UML类图看懂了, 照着类图将代码实现是很容易的事情. 步骤: 先看懂类图, 然后将代码实现, 之后再看文字 http://c.biancheng.net/des ...

  10. Nginx 配置文件介绍

    目录 1.1 常用命令 1.2 Nginx的配置文件结构 1.3 Nginx的全局配置 1.4 HTTP服务器配置 1.5 HttpGzip配置 1.6 负载均衡配置 1.7 server虚拟主机配置 ...