【Java面试题】Java中类的成员访问控制符小结

前言

想必一开始学习Java的时候很多小伙伴对于privateprotected等等这些单词一定很熟悉,但是也很容易混淆。在此我把这几个单词包括staticfinal也介绍介绍。

几个修饰符
  • private

    从单词意思就能看出来,如果被这个单词修饰,那么使用的范围肯定很窄!的确是的,如果其修饰了某个类中的成员,那么成为该类的私有成员,只能通过该类自身的方法访问和修改,不能被其他类(包括该类的子类)获取或者引用

  • protected

    用该修饰符修饰的成员可以被三种类所引用:①该类自身;②和该类在同一个包中的其他类;③在其他包中该类的子类。如果使用该修饰符的话,同时兼顾成员的安全性和便利性。

  • public

    如果使用这个修饰符修饰,说白了:无论哪个类在什么地方,都可以访问public修饰的成员。

  • 缺省访问控制符

    在很多时候会省去访问控制符,这个时候用到的就是缺省的访问控制符,此时:该成员只能被同一个包中的所有类所访问。也就是说,如果该类的子类和它不在同一个包中,那么该类的子类也是无法访问这个成员的。

题外的两个修饰符
  • final
    其实到这里你会发现区分这些修饰符的作用,通过联想单词的含义还是很有帮助的。final,意思就是最终的,已经到终点了,无法修改了。好的,那么被它修饰过的类:已经是最终的类了,那么肯定是不能继承了呀,不能拥有子类!如果是被它修饰过的成员变量:已经是最终的变量了,不能变了,那就是常量啊,那么问题来了,既然是常量了,我们在哪初始化呢?有两个方法:①在定义变量时就给出一个初始值;②在类的构造方法中,对变量进行赋值;之后其他地方就修改不了。如果是被它修饰过的成员方法:这个和修饰过的类很像啊,说明如果在子类中这个方法不能重写(Override)了啊。
  • static
    静态修饰符,被它修饰过的类成为静态类,被它修饰过的变量成为静态变量。静态变量时隶属于类的变量,对静态变量(方法)的访问有两种方式:①Class.静态变量(方法);②对象.静态变量(方法);由于静态方法在加载类的时候就需要加载静态方法,因此在静态方法中不能用到类中的其他非静态变量,同时也不能使用this或者super关键字,因为this或者super实际上都是指代一个对象实例,而此时并没有创建对象。
一道面试题:为什么main函数是static的?

因为Java虚拟机在运行时,当系统执行一个程序前并没有常见main()方法所在类的一个实例,因此只能通过类名来调用main方法作为程序的入口,也就是说调用main()方法的是类,而不是对象,因此必须用static来修饰。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值