不论是类、属性,还是方法的声明中,都有一个可设置的“修饰符”,它可以实现一些高级特性。

1、static

static被称之为静态的,并不是指不可以修改的意思,而是说它的内存空间是静态的。

1.1 修饰属性

如果某个类的某个属性被static修饰,那么意味着不论创建多少个对象,它们都是共用该属性,不会有各自独立的值。也即是说,凡是被static修饰的属性也好,方法也罢,它是属于类的,不属于某个具体的对象。所以它既可以使用对象调用,也可以直接通过类名调用。

静态属性是类的所有对象共享,就像一个教室(类)可能有20个学生也可能有30个学生(对象),但是老师始终只有一个(静态属性)。

1.2 修饰方法

同理,被static修饰的方法,称之为静态方法,意味着它与实例无关,不论哪个对象调用都执行相同的操作。这也意味着静态方法中不能出现非静态的属性(即属于对象独立的属性)。

说简单一点,静态方法是不通过对象就可以调用,意味着在对象没有创建之前就可以调用,既然对象没创建,对象属性也就不存在,静态方法中还能存在非静态属性吗?显然不能。



2、final

2.1 修饰属性

final修饰属性,那么在定义时就必须直接赋值或者在构造方法中进行赋值,并且后期无法修改。

常见的一些常量就需要用final修饰,如圆周率 static final double  pi = 3.1415926;

final因为修饰的值不能改变,这通常是公用常量,所以很多时候也配合static一起使用。静态常量命名字母全大写,单词间下划线隔离。

2.2 修饰方法

final修饰方法,表示该方法必须有实现代码,且子类不能覆盖该方法。

2.3 修饰类

final修饰类,表示该类不能被定义为接口或抽象类,且不可以被继承。如大名鼎鼎的String类就是一个final类。


[13] static 和 final的更多相关文章

  1. java基础(13):static、final、匿名对象、内部类、包、修饰符、代码块

    1. final关键字 1.1 final的概念 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子 ...

  2. 疯狂java学习笔记之面向对象(八) - static和final

    一.static: 1.static是一个标识符: - 有static修饰的成员表明该成员是属于类的; - 没有static修饰的成员表明该成员是属于实例/对象的. 2.static修饰的成员(Fie ...

  3. php中$this、static、final、const、self 等几个关键字的用法

    <?phpclass A { public static function get_self(){ return new self(); } public static function get ...

  4. Java的static和final关键字的用法

    static关键字的用法 static的意思是"'静态的",在java里面可用于修饰属性和方法. static关键字的应用应注意以下几种情形: 1.static作用于某个字段,一个 ...

  5. 简单总结static、final、this关键字的使用

    在最近看书的过程中,常常遇到static.final.this这三个关键字,不是很明白它们的使用,查阅资料结合实例做了如下总结: 一.static——无需创建对象就可以调用(方法.属性). 1.静态变 ...

  6. Java面试题_第一阶段(static、final、面向对象、多线程、集合、String、同步、接口、GC、JVM)

    1.1 简述static和final的用法? static:修饰属性,方法,代码块 (1)静态属性:也可叫类变量  类名.属性名  来访问 (共有的类变量与对象无关,只和类有关) 注意:类中的实例变量 ...

  7. java笔记——Java关键字static、final使用小结

    static  1. static变量     按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量.两者的 ...

  8. java中static 和 final 的一些使用规则

    一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...

  9. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

随机推荐

  1. C# 移动无标题栏窗体的几种方法

    第一种,手工移动. 该方法根据鼠标位置实现窗体的移动.网上有很多相关的例子,这里不再多讲. 第二种,调用系统API原理:是当鼠标左键按下时,让系统认为是在标题栏按下的.这里我们用到了winapi里的W ...

  2. JAVA 验证码生成(转)

    最近做了一下验证码的功能,网上找了一篇还不错,引用下:http://blog.csdn.net/ruixue0117/article/details/22829557 这篇文章非常好,但是web和js ...

  3. 递归调用里的性能问题(js)

    说明 这是在codewars.com上刷的一道js练习题,在此做个记录 问题描述 The Fibonacci sequence is traditionally used to explain tre ...

  4. HTML <td> 标签的 colspan 属性

    HTML <td> 标签的 colspan 属性 实例 表格单元横跨两列的表格: 浏览器支持 所以浏览器都支持 colspan 属性. 没有浏览器支持 colspan="0&qu ...

  5. python链接MySQLdb报错:2003

    使用python链接Mysql数据库操作,遇到问题! 问题如图所示: 解决方法:将"localhost"改为"127.0.0.1" db=MySQLdb.con ...

  6. 理解javascript 对象,原型对象、闭包

    javascript作为一个面向对象的语言,理解 对象.原型.闭包.模块模式等技术点对于成为一名合格的javascript程序员相当重要,多年没写过blog,今天就先拋个玉,在下基本也不做前端,但颇感 ...

  7. django日期比较

    from django.db import models from django.utils import timezone import datetime # Create your models ...

  8. mvc中html导出成word下载-简单粗暴方式

    由于工作需求,需要把html简历页导出成word下载.网上搜索了很多解决方案,基本都是用一些插件,然后写法也很麻烦,需要创建模板什么的. 固定替换值  代码一大堆.但是对于我的需求来说  并没有什么用 ...

  9. JQuery实用技巧--学会你也是大神(1)——插件的制作技巧

      前  言 JRedu 学习之前,首先我们需要知道什么是JQuery? JQuery是一个优秀的javascript框架. JQuery是继Prototype之后又一个优秀的Javascript框架 ...

  10. JUnit之TestCase和TestSuite详解

    首先介绍下TestCase以及TestSuite.    TestCase:字面意思,测试用例.为一个或多个方法提供测试方法.一般是一个test    TestSuite:测试集合,即一组测试.一个t ...