final关键字概念及其四种用法、四种权限修饰符的优先级以及内部类的相关概念
一、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关键字修饰,那么这个关键字也照样不可变
- 由于成员变量具有默认值,所以用了final关键字之后必须手动赋值,不会再给默认值了。
- 对于final成员变量,要么使用直接赋值,要么通过构造方法进行赋值。二者选其一。
- 必须保证类当中所有重载的构造方法,都最终会对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关键字概念及其四种用法、四种权限修饰符的优先级以及内部类的相关概念相关推荐
- java内部类的权限符,static介绍、内部类、final、权限修饰符的作用范围,
static介绍.内部类.final.权限修饰符的作用范围,static 关键字:(可用于修饰方法.变量) static 特点: static是静态修饰符,一般修饰成员变量.被static修饰的属于全 ...
- JAVA-------封装+Private关键字+权限修饰符+This关键字
封装 封装就是隐藏对象的属性和实现细节,仅对外提供公共的访问方式 为什么要封装: 提高代码的安全性 提高代码的维护性 隐藏代码细节,只提供公共的访问方式 如何实现封装: 利用Priva ...
- java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)
final关键字: final表示最终的不可变的,在java中可以用来修饰类或方法.局部变量.成员变量. // 1.final关键字修饰类需要放在class关键字前面,表示不可变的类,需要注意,这里表 ...
- Java_Day10 final关键字、权限修饰符、内部类
final关键字 代表最终.不可改变的 常见四种用法: 可以用来修饰一个类 不能使用一个final类来作为父类 格式: public final class 类名称{}//当前这个类不能有任何的子类 ...
- JAVASE零基础入门——package、封装、继承、访问权限修饰符、super、重写、Javabean 和 final 关键字
目录 一.Package 二.封装 三.继承 四.访问权限修饰符 五.super 关键字 六.重写 6.1 重写 与 重载 之间的区别 : 6.2 重写的实现条件: 6.3 重写的需求 : 6.4 调 ...
- java基础2:this、static、final、abstract关键字、代码块、生成API工具包、继承、多态、方法重载和重写,抽象类、接口、常见异常、java权限修饰符、选择排序思想和程序和内部类
1.this关键字 this表示当前类对象的地址空间值的引用.就是说,this代表了new出来的对象 其最大作用就是解决了构造器中局部变量隐藏成员变量.即用this.变量名 = 变量名 区分. 2.s ...
- 2020.1.30 封装和隐藏(四种访问权限修饰符)、this、JavaBean、继承、方法的重写
面对对象特征之一:封装和隐藏 Java中通过数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对属性的操作. 四种访问权限修饰符 在同一个ja ...
- java中四种默认的权限修饰符,Java中四种访问权限资料整理
一.Java中有四种访问权限, 其中三种有访问权限修饰符,分别为private.public.protected,还有一种不带任何修饰符(default). 1. private: Java语言中对访 ...
- 代码块、final关键字、包、权限修饰符的复习理解
1.代码块: 概述:被大括号单独包裹的代码段叫做代码块根据位置的不同,命名的不同它的使用时机和功能不一样. 分类: 1.局部代码块: 概述:定义在方法中的代码块 位置:方法的方法体中 作用:给局部变量 ...
最新文章
- 解决无线网卡 RTL8723BE ubuntu环境下不稳定情况
- MySQL的用户和授权
- SpringBoot 配置记录
- HDU2068(错列排序)
- Vim/GVim格式化xml文件
- python学多久能写东西的软件有哪些_怎么自学python,大概要多久?
- 用PL/SQL Develpoer工具完成导入和导出
- python工程师笔试题_2019年,Python工程师必考的6个面试题,Python面试题No5
- 计算机的配置与选购调查报告,目前主流危机计算机的配置及选购的调查报告.doc...
- C++STL之双端队列Deque
- IE7pro v0.9.8已经发布(已经有中文包)
- PR开场片头模板 恐怖惊悚电影侦探节目logo展示PR模板
- JS中使数组倒序排列
- html页面嵌入百度地图
- 用c语言编程点菜系统,基于C语言实现点菜系统.pdf
- simulink中的s-function的直接馈入
- M1 Mac上更好的 Golang 使用方案
- 校园二手交易android软件 基于AndroidStudio
- Excel 2019:二级级联下拉框设置
- ubuntu大于4T分区 12T硬盘分区
热门文章
- 家用投影仪多少钱的价位比较合适?看完不踩雷!
- 【第三方SDK】使用百度云推送实现推送功能详解
- 儿童用灯哪个品牌好?分享五款儿童护眼台灯品牌
- map型字段 mongodb_在MongoDB中使用Map/Reduce
- Tensorflow猫狗识别模型在Android上的部署
- 网吧计算机工作流程,[原创]网吧内各岗位工作流程
- Codeforces Round #739 (Div. 3)题解A-E
- ubuntu13.10中使用qq音乐网页版
- zemax---Enclosed Energy Diffraction图的查看方法
- 欧姆龙PLC与fanuc发那科机器人进行Ethrenet ip通信测试