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关键字的更多相关文章

  1. Java基础之final和static关键字

    一.final        根据程序上下文环境,它可以修饰非抽象类.非抽象类成员方法和变量.         final类不能被继承,没有子类,final类中的方法默认是final的.        ...

  2. Java基础之final、static关键字

    一.前言 关于这两个关键字,应该是在开发工作中比较常见的,使用频率上来说也比较高.接口中.常量.静态方法等等.但是,使用频繁却不代表一定是能够清晰明白的了解,能说出个子丑演卯来.下面,对这两个关键字的 ...

  3. Java基础系列--final、finally关键字

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8482909.html 一.概述 final是Java关键字中最常见之一,表示“最终的,不可 ...

  4. Java基础语法(11)-面向对象之关键字

    title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...

  5. final和abstract关键字的作用

    final和abstract关键字的作用 final和abstract是功能相反的两个关键字,可以对比记忆 abstract可以用来修饰类和方法,不能用来修饰属性和构造方法:使用abstract修饰的 ...

  6. Java基础(五) final关键字浅析

    前面在讲解String时提到了final关键字,本文将对final关键字进行解析. static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提 ...

  7. 【Java基础】final关键字总结

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  8. java中的this、super、static、final、abstract关键字的作用

    this关键字的作用 1.this是对象内部指代自身的引用,同时也是解决成员变量和局部变量同名问题: 2.this可以调用成员变量,不能调用局部变量: 3.this也可以调用成员方法,但在普通方法中可 ...

  9. JAVA基础知识(2)--关键字final的使用

    /***Final关键字的使用*@author lihaiming*Email:912547587@qq.com*关键字Final可以修饰属性,方法,类*修饰属性的时候,final修饰的变量是一个常量 ...

随机推荐

  1. 通过CXF,开发rest协议接口

    1. 引入cxf的jar包 pom文件里面直接增加依赖 < dependency> <groupId > junit</ groupId> <artifact ...

  2. linux和aix内核参数检查

    安装oracle软件时需要设置操作系统级别的用户限制,后期检查可以使用如下命令,方便问题的排查工作 linux: tail -15 /etc/security/limits.conf tail -30 ...

  3. ZT 初始化 const 成员和引用类型成员(C++)

    初始化 const 成员和引用类型成员(C++) 初始化 const 成员和引用类型成员的问题,在 C++ 教材中讲述初始化列表的章节应该都有讲过,但是因为平时用得少,所以可能有不少人没注意到.待到用 ...

  4. Codeforces Round #423 (Div. 2)

    codeforces 423 A. Restaurant Tables [水题] //注意,一个人选座位的顺序,先去单人桌,没有则去空的双人桌,再没有则去有一个人坐着的双人桌.读清题意. #inclu ...

  5. UVa 12716 - GCD XOR(筛法 + 找规律)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  6. MSF入侵安卓手机

    MSF是Metasploit的简称,Metasploit是一款开源的安全漏洞检测工具,非常强大,分别有Windows版和Linux版,工具里集成了许多微软公布的漏洞(0day). 我这里做测试的系统是 ...

  7. flex布局兼容性写法

    CSS样式 flex:定义布局为盒模型 flex-v:盒模型垂直布局 flex-1:子元素占据剩余的空间 flex-align-center:子元素垂直居中 flex-pack-center:子元素水 ...

  8. subline关联linux系统

    一. 插件安装用Package Control安装插件按下Ctrl+Shift+P调出命令面板输入install 调出 Install Package 选项并回车,然后输入sftp,下拉列表中会出现一 ...

  9. Xcode命令行作用

    问题:Command Line Tools for Xcode有什么用 答案: Command Line Tools里面有git, xcrun, xcodebuild, gcc, gdb, make等 ...

  10. stm32之remap

    1.GPIO的重映射属于AFIO,不同类型不同引脚数单片机情况不一样,比如下图: 2.AFIO 下面还分default/Remap,如果用到了remap就得使用: GPIO_PinRemapConfi ...