java学习笔记(5)

关键字

final

用法:

修饰一个类

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

含义:当前这个类 不能有任何的子类
(太监类),一定有父类。

因此,修饰的类,其中所有的成员方法都无法覆盖重写(无子类),但可以自身覆盖重写父类的成员方法。

修饰一个方法

修饰符 final 返回值类型 方法名(参数列表) {
    //方法体
}

含义:被final修饰的方法为 最终方法
不能再被覆盖重写

对于类和方法来说,abstract和final关键字 不能同时使用

修饰一个局部变量

final 数据类型 变量名 = 值;
or
final 数据类型 变量名;
变量名 = 值;        //赋值,只要保证有唯一一次赋值即可

含义:被final修饰的变量值,不允许更改, 一次赋值,终生不变
,并且不允许对已经定义的变量名,改变其值

int num1 = 10;
final num1 = 12;   //Error!!!

不可变:

对于基本数据类型,变量中的数据不可变

对于引用数据类型,变量中的地址值不可变

修饰一个成员变量

直接赋值:

构造方法赋值:
    如Person类
private final 数据类型 成员变量名

public Person() {
    成员变量名 = .... ; //此处进行赋值
}
    再去掉下面这个方法
public void setName() {
    ...
}

注意:

1.由于成员变量会自带默认值,null或者0,也属于赋值,所以用了final后必须手动赋值,就不会再给默认值了。

2.对于final的成员变量,要么 直接赋值
,要么通过 构造方法赋值
(用了直接赋值,就不要用构造; 二者选一

3.必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值。

四种权限修饰符

public > protected > (default) > private
同一个类( 我自己) YES YES YES YES
同一个包 (我邻居) YES YES YES NO
不同包子类(我儿子) YES YES NO NO
不同包非子类(陌生人) YES NO NO NO

注意事项:

(default)是指不写

内部类

原文 

https://segmentfault.com/a/1190000023196518

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » java学习笔记(5)

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址