Java基础之final和abstract关键字
final
final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。
修饰变量(例如Math类的PI=3.1415926就是变量不可修改)
用final关键字修饰的成员(实例)变量或局部变量统称为final变量。final变量经常和static关键字一起使用,作为常量。用final关键字修饰的变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改(只读类型);如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
修饰方法
final关键字可以修饰方法,代表这个方法不可以被子类的方法重写(覆盖)。如果你认为一个方法的功能已经足够完整了,继承它的类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。
关于private和final关键字还有一点联系,这就是类中所有的private方法都隐式地指定为是final的,由于无法在类外使用private方法,所以也就无法覆盖它。
修饰类
当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。Java中有许多类是final的,譬如String类、Math类、Integer以及其他包装类。
abstract
修饰方法
abstract关键字修饰的方法称为抽象方法。抽象方法只有方法的声明,没有方法的实现,即方法名后面没有大括号{},抽象方法是供子类继承重写的,他的实现是通过子类继承方法所在的类,然后重写(覆盖)该方法并实现具体功能。抽象方法一般定义在抽象类和接口中。
修饰类
abstract关键字修饰的类称为抽象类。抽象类不能被实例化,不能通过new关键字创建类的对象。如果子类(非抽象类)继承了抽象类,抽象类可以指向子类的引用。抽象类可以包含抽象方法和非抽象方法。
如abstract class A{}、class B extends A{},不可以创建A类的实例对象即不可以“A a=new A();”。但A类的引用变量可以指向B类对象,即可以“A a=new B();”。
- 如果一个类中有抽象方法,则这个类必须是抽象类;如果一个类是抽象类,则这个类中的方法不一定是抽象的,抽象类中可以有抽象方法,也可以有非抽象方法(如构造方法)。
- 如果一个子类继承了抽象类,并重写(实现)了所有的抽象方法,则可以创建此类的对象并实例化;如果没有重写(实现)所有的抽象方法,意味着此类中仍有抽象方法,则此类必须声明为抽象的!
- 接口中所有方法都是抽象方法,接口一般用于定义一系列方法,供其他类继承并实现;而抽象类中的方法可以是抽象方法,也可以是非抽象方法。因此接口比抽象类更抽象,接口可以理解为纯抽象的,抽象类可以理解为半抽象的,普通类是不抽象的,抽象类是纯抽象到不抽象的一个过渡。
转载请注明出处 http://www.cnblogs.com/Y-oung/p/9048287.html
工作、学习、交流或有任何疑问,请联系邮箱:yy1340128046@163.com
Java基础之final和abstract关键字的更多相关文章
- Java基础之final和static关键字
一.final 根据程序上下文环境,它可以修饰非抽象类.非抽象类成员方法和变量. final类不能被继承,没有子类,final类中的方法默认是final的. ...
- Java基础之final、static关键字
一.前言 关于这两个关键字,应该是在开发工作中比较常见的,使用频率上来说也比较高.接口中.常量.静态方法等等.但是,使用频繁却不代表一定是能够清晰明白的了解,能说出个子丑演卯来.下面,对这两个关键字的 ...
- Java基础系列--final、finally关键字
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8482909.html 一.概述 final是Java关键字中最常见之一,表示“最终的,不可 ...
- Java基础语法(11)-面向对象之关键字
title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...
- final和abstract关键字的作用
final和abstract关键字的作用 final和abstract是功能相反的两个关键字,可以对比记忆 abstract可以用来修饰类和方法,不能用来修饰属性和构造方法:使用abstract修饰的 ...
- Java基础(五) final关键字浅析
前面在讲解String时提到了final关键字,本文将对final关键字进行解析. static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提 ...
- 【Java基础】final关键字总结
Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...
- java中的this、super、static、final、abstract关键字的作用
this关键字的作用 1.this是对象内部指代自身的引用,同时也是解决成员变量和局部变量同名问题: 2.this可以调用成员变量,不能调用局部变量: 3.this也可以调用成员方法,但在普通方法中可 ...
- JAVA基础知识(2)--关键字final的使用
/***Final关键字的使用*@author lihaiming*Email:912547587@qq.com*关键字Final可以修饰属性,方法,类*修饰属性的时候,final修饰的变量是一个常量 ...
随机推荐
- SQLi-db 批量注入工具+教程
这款工具在中国还没人发.所以我发来给大家玩玩:顺便带了教程. 关键字:inurl:article.asp?id= inurl:article.php?id=inurl:article.jsp?id=( ...
- Visual Studio中头文件stdafx.h的作用
在较新版的Visual Studio中,新生成的C++项目文件的的头文件夹下会默认有头文件stdafx.h,而源文件夹下则默认有源文件stdafx.cpp,手动将这些文件删除后,编译时系统还会报错.下 ...
- hdu 6214 Smallest Minimum Cut[最大流]
hdu 6214 Smallest Minimum Cut[最大流] 题意:求最小割中最少的边数. 题解:对边权乘个比边大点的数比如300,再加1 ,最后,最大流对300取余就是边数啦.. #incl ...
- [JSOI2016]最佳团体
嘟嘟嘟 01分数规划+树形背包. 然后就没了. 结果我调了半天,原因还是树形背包不熟练. 我是用dfs序求的,转化的时候,是dp[i][j]转化到dp[i + 1][j + 1]或dp[i +siz[ ...
- 5.spring:注解配置 Bean
在classpath中扫描组件 组键扫描:能够从classpath下自动扫描,侦测和实例化具有特定注解的组件 特定的组件包括: ->@Componment:基于注解,标识一个受Spring管理的 ...
- Search - Dictionary
Search III Your task is to write a program of a simple dictionary which implements the following ins ...
- Spring(十九)之异常处理
异常处理,对于项目开发至关重要,总不能用户点击一个页面出错了,直接报500,那样用户体验多不好啊! 所以这里讲的是SpringMVC对异常的处理,希望能给大家带来一定的 帮助和启发. 一.编写实体 p ...
- Pyplot教程(深度学习入门3)
源地址:http://matplotlib.org/users/pyplot_tutorial.html .caret, .dropup > .btn > .caret { border- ...
- java之静态方法,静态变量
在自动化测试中,经常会用到静态方法和静态变量.那么什么是静态方法和静态变量呢?以及在什么情况下使用呢?下面来说一说 静态方法和静态变量是使用公共内存空间的,就是说所有对象都可以直接引用,不需要创建对象 ...
- 【题解】洛谷P1351 [NOIP2014TG] 联合权值(树形结构+DFS)
题目来源:洛谷P1351 思路 由题意可得图为一棵树 在一棵树上距离为2的两个点有两种情况 当前点与其爷爷 当前点的两个儿子 当情况为当前点与其爷爷时比较好操作 只需要在传递时不仅传递父亲 还传递爷爷 ...