一、final关键字代表最终、不可改变的。

  • 常见的四种用法:
    ①、可以用来修饰一个类。
    ②、可以用来修饰一个方法。
    ③、还可以用来修饰一个局部变量。
    ④、还可以用来修饰一个成员变量。

(1)、修饰一个类

当final关键字用来修饰一个类的时候,格式如下:

public final class 类名称 {//...
}

含义:当前这个类不能有任何的子类。 不能使用一个final类来作为父类。
注意:一个如果是final的,那么其中所有的成员方法都无法进行覆盖重写。

(2)、修饰一个方法

当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写。
格式:

修饰符 final 返回值类型 方法名称(参数列表){//方法体
}
public class Fu{public final void method(){System.out.println("父类方法执行!");}
}

注意事项:
对于类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾。
因为使用abstract关键字,子类必须覆盖重写;但是如果父类中的方法使用了final修饰,子类不能覆盖重写;这就出现了自相矛盾。

修饰一个局部变量

一旦使用final关键字用来修饰局部变量,那么这个变量就不能进行修改。
一次赋值,终身不变。

public class Demo01Final{public static void main(String[] args){final int num = 200;}
}

对于基本类型来说,不可变说的就是变量当中的数据不可改变,
对于引用类型来说,不可变说的就是变量当中的地址值不可以改变。

public class Student {private String name;public Student() {}public Student(String name) {this.name = name;}public void setName(String name) {this.name = name;}
}

测试实例:

public class Main {public static void main(String[] args) {Student stu1 = new Student("路飞");System.out.println(stu1.getName());//路飞System.out.println(stu1);stu1 = new Student("索隆");System.out.println(stu1.getName());//索隆System.out.println(stu1);//stu1地址值前、后发生改变System.out.println("----------------");final Student stu2 = new Student("山治");System.out.println(stu2);System.out.println(stu2.getName());stu2.setName("乔巴巴巴巴");System.out.println(stu2);//stu2地址值前、后没有发生改变System.out.println(stu2.getName());//stu2的内容前、后发生改变}
}

运行结果:

路飞
com.zm.demo.Student@1540e19d
索隆
com.zm.demo.Student@677327b6
----------------
com.zm.demo.Student@14ae5a5
山治
com.zm.demo.Student@14ae5a5
乔巴巴巴巴

修饰一个成员变量

  • 对于成员变量来说,如果使用final关键字修饰,那么这个关键字也照样不可变
  1. 由于成员变量具有默认值,所以用了final关键字之后必须手动赋值,不会再给默认值了。
  2. 对于final成员变量,要么使用直接赋值,要么通过构造方法进行赋值。二者选其一。
  3. 必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值。
public class Person {private final String name;public Person() {name ="海贼王";}public Person(String name) {this.name = name;}public String getName() {return name;}
}

二、四种权限修饰符

  • public > protected > (default) > private
同一个类 public protected (default) private
同一个类(我自己) YES YES YES YES
同一个包(我邻居) YES YES YES NO
不同包子类(我儿子) YES YES NO NO
不同包非子类(陌生人) YES NO NO NO
  • 注意事项:(default)并不是关键字“default”,而是根本不写。

三、内部类的概念和分类

  • 如果一个事物的内部包含另外一个事物,那么这就是一个类内部包含另一个类。
  • 分类:
    ①、成员内部类。
    ②、局部内部类(包含匿名内部类)。

(一)、成员内部类:

1.定义格式:

修饰符 class 外部类名称 {修饰符 class 内部类名称{//...}//...
}
  • 注意:内用外,随意访问;外用内,需要内部类对象。
public class Body {//外部类public class Heart{//成员内部类//内部类的方法public void beat(){System.out.println("跳动...");System.out.println("我叫:"+name);}}//外部类的成员方法private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}//外部类方法public void methodBody(){System.out.println("外部类的方法");}
}

2.成员内部类的使用

(1)间接方式:在外部类的方法当中,使用内部类;然后main只是调用外部类的方法
public class Body {//外部类public class Heart{//成员内部类//内部类的方法public void beat(){System.out.println("跳动...");System.out.println("我叫:"+name);}}//外部类的成员方法private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}//外部类方法public void methodBody(){System.out.println("外部类的方法");new Heart().beat();//												

final关键字概念及其四种用法、四种权限修饰符的优先级以及内部类的相关概念相关推荐

  1. java内部类的权限符,static介绍、内部类、final、权限修饰符的作用范围,

    static介绍.内部类.final.权限修饰符的作用范围,static 关键字:(可用于修饰方法.变量) static 特点: static是静态修饰符,一般修饰成员变量.被static修饰的属于全 ...

  2. JAVA-------封装+Private关键字+权限修饰符+This关键字

    封装 封装就是隐藏对象的属性和实现细节,仅对外提供公共的访问方式 为什么要封装: ​ 提高代码的安全性 ​ 提高代码的维护性 ​ 隐藏代码细节,只提供公共的访问方式 如何实现封装: ​ 利用Priva ...

  3. java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)

    final关键字: final表示最终的不可变的,在java中可以用来修饰类或方法.局部变量.成员变量. // 1.final关键字修饰类需要放在class关键字前面,表示不可变的类,需要注意,这里表 ...

  4. Java_Day10 final关键字、权限修饰符、内部类

    final关键字 代表最终.不可改变的 常见四种用法: 可以用来修饰一个类 不能使用一个final类来作为父类 格式: public final class 类名称{}//当前这个类不能有任何的子类 ...

  5. JAVASE零基础入门——package、封装、继承、访问权限修饰符、super、重写、Javabean 和 final 关键字

    目录 一.Package 二.封装 三.继承 四.访问权限修饰符 五.super 关键字 六.重写 6.1 重写 与 重载 之间的区别 : 6.2 重写的实现条件: 6.3 重写的需求 : 6.4 调 ...

  6. java基础2:this、static、final、abstract关键字、代码块、生成API工具包、继承、多态、方法重载和重写,抽象类、接口、常见异常、java权限修饰符、选择排序思想和程序和内部类

    1.this关键字 this表示当前类对象的地址空间值的引用.就是说,this代表了new出来的对象 其最大作用就是解决了构造器中局部变量隐藏成员变量.即用this.变量名 = 变量名 区分. 2.s ...

  7. 2020.1.30 封装和隐藏(四种访问权限修饰符)、this、JavaBean、继承、方法的重写

    面对对象特征之一:封装和隐藏 Java中通过数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对属性的操作. 四种访问权限修饰符 在同一个ja ...

  8. java中四种默认的权限修饰符,Java中四种访问权限资料整理

    一.Java中有四种访问权限, 其中三种有访问权限修饰符,分别为private.public.protected,还有一种不带任何修饰符(default). 1. private: Java语言中对访 ...

  9. 代码块、final关键字、包、权限修饰符的复习理解

    1.代码块: 概述:被大括号单独包裹的代码段叫做代码块根据位置的不同,命名的不同它的使用时机和功能不一样. 分类: 1.局部代码块: 概述:定义在方法中的代码块 位置:方法的方法体中 作用:给局部变量 ...

最新文章

  1. 解决无线网卡 RTL8723BE ubuntu环境下不稳定情况
  2. MySQL的用户和授权
  3. SpringBoot 配置记录
  4. HDU2068(错列排序)
  5. Vim/GVim格式化xml文件
  6. python学多久能写东西的软件有哪些_怎么自学python,大概要多久?
  7. 用PL/SQL Develpoer工具完成导入和导出
  8. python工程师笔试题_2019年,Python工程师必考的6个面试题,Python面试题No5
  9. 计算机的配置与选购调查报告,目前主流危机计算机的配置及选购的调查报告.doc...
  10. C++STL之双端队列Deque
  11. IE7pro v0.9.8已经发布(已经有中文包)
  12. PR开场片头模板 恐怖惊悚电影侦探节目logo展示PR模板
  13. JS中使数组倒序排列
  14. html页面嵌入百度地图
  15. 用c语言编程点菜系统,基于C语言实现点菜系统.pdf
  16. simulink中的s-function的直接馈入
  17. M1 Mac上更好的 Golang 使用方案
  18. 校园二手交易android软件 基于AndroidStudio
  19. Excel 2019:二级级联下拉框设置
  20. ubuntu大于4T分区 12T硬盘分区

热门文章

  1. 家用投影仪多少钱的价位比较合适?看完不踩雷!
  2. 【第三方SDK】使用百度云推送实现推送功能详解
  3. 儿童用灯哪个品牌好?分享五款儿童护眼台灯品牌
  4. map型字段 mongodb_在MongoDB中使用Map/Reduce
  5. Tensorflow猫狗识别模型在Android上的部署
  6. 网吧计算机工作流程,[原创]网吧内各岗位工作流程
  7. Codeforces Round #739 (Div. 3)题解A-E
  8. ubuntu13.10中使用qq音乐网页版
  9. zemax---Enclosed Energy Diffraction图的查看方法
  10. 欧姆龙PLC与fanuc发那科机器人进行Ethrenet ip通信测试