Java学习第十一天——final关键字,权限修饰符

Java学习第十一天——final关键字,权限修饰符

final关键字代表最终,不可改变

常见的四种用法
1.可以用来修饰一个类
2.可以用来修饰一个方法
3.可以用来修饰一个局部变量
4.可以用来修饰一个成员变量

final修饰变量和局部变量

对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样是不可变的
1.由于成员变量是有默认值的,所以是使用final修饰后必须马上赋值,不会再给默认值
2.对于final修饰的成员变量,要么直接赋值,要么通过构造方法赋值,而且只能赋值一次

public class Demo01Final {

    public static void main(String[] args) {
        int num = 10;
        num = 20;
        System.out.println(num);
        //一旦使用final用来修饰一个局部变量,那么这个变量就不能改变
        //一次赋值,终身不变
        final int num1 = 20;
        System.out.println(num1);
//        num1 = 200;

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

    }
}

final用来修饰一个类

当final关键字用来修饰一个类的时候,格式
public final class 类名称{
//…
}
含义当前这个类不能有任何子类。(太监类)
内容写法和一般类没有任何变量去吧

注意:一个类如果是final的,那么其中所有成员变量都无法进行覆盖从写,因为没儿子

final可以用来修饰一个方法

当final关键字用来修饰的方法,这个方法就是最终方法,也就是不能被覆盖重新
格式
修饰符 final 返回值类型 方法名称(参数列表){
//
}
注意事项:
对于类方法来说,关键字abstract和final关键字不能同时使用,因为矛盾

四中权限修饰符

(1)public : 公共权限

修饰对象: 修饰类、方法、属性

继承: 被public所修饰的成员能被该类的所有子类继承下来。

作用域: 可以被任意类访问

public能用来修饰类,在一个java源文件中只能有一个类被声明为public,而且一旦有一个类为public,那这个java源文件的文件名就必须要和这个被public所修饰的类的类名相同,否则编译不能通过。说到这里,穿插多一点知识。一个类作为外部类的时候只能被public或者默认访问修饰符所修饰,但是一个类如果作为内部类的时候,则可以被四种访问修饰符所修饰,因为一个类作为内部类的时候,就作为外部类的一个成员属性了,因此可以有四种访问修饰符修饰,这是内部类和外部类的一个区别。

public用来修饰类中成员(变量和方法),被public所修饰的成员可以在任何类中都能被访问到。通过操作该类的对象能随意访问public成员。

public在类的继承上的体现,被public所修饰的成员能被所有的子类继承下来。

**(2)protected:**受保护的权限

修饰对象:修饰内部类,接口,属性,方法

继承: 被protected所修饰的成员能被该类的所有子类继承下来。

作用域: 可以被同包类访问,如果不是同包,必须是该类的子类才能访问

(3)default : 同包权限**(默认,缺省的)**

修饰对象:修饰类,属性,方法。

继承:被default所修饰的成员只能被该类所在同一个package中的子类所继承下来。(也就是说只有在同一个package中的子类才能访问到父类中default修饰的成员)

作用域: 只能被同包的类访问

(4) private : 私有权限

修饰对象 : 内部类,属性,方法

作用域: 只能在本类中使用

修饰的访问权限

java四中权限修饰符
                    public  > protected  > default >   private

同一个类(我自己)        yes         yes         yes         yes
同一个包 (我邻居)       yes         yes         yes         no
不同包子类 (我儿子)      yes         yes         no          no
不同包非子类 (陌生人)     yes         no          no          no

注意:

(1)protected不能修饰类。

(2)priavte可以修饰类,但是该类必须是一个内部类。

在定义类时,推荐访问控制级别从严处理:

(1) 如果不允许外部直接通过 new 创建对象,构造方法必须是 private。

(2)工具类不允许有 public 或 default 构造方法。

(3)类非 static 成员变量并且与子类共享,必须是 protected。

(4)类非static成员变量并且仅在本类使用,必须是private。

(5)类 static 成员变量如果仅在本类使用,必须是 private。

(6)若是 static 成员变量,必须考虑是否为 final。

(7)类成员方法只供类内部调用,必须是 private。

(8)类成员方法只对继承类公开,那么限制为 protected。

类修饰符:

public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类。

abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。

final,将一个类生命为最终(即非继承类),表示他不能被其他类继承。

friendly,默认的修饰符,只有在相同包中的对象才能使用这样的类。

成员变量修饰符:

public(公共访问控制符),指定该变量为公共的,他可以被任何对象的方法访问。

private(私有访问控制符)指定该变量只允许自己的类的方法访问,其他任何类(包括子类)中的方法均不能访问。

protected(保护访问控制符)指定该变量可以别被自己的类和子类访问。在子类中可以覆盖此变量。

friendly ,在同一个包中的类可以访问,其他包中的类不能访问。

final,最终修饰符,指定此变量的值不能变。

static(静态修饰符)指定变量被所有对象共享,即所有实例都可以使用该变量。变量属于这个类。

transient(过度修饰符)指定该变量是系统保留,暂无特别作用的临时性变量。

volatile(易失修饰符)指定该变量可以同时被几个线程控制和修改。

方法修饰符:

public(公共控制符)

private(私有控制符)指定此方法只能有自己类等方法访问,其他的类不能访问(包括子类)

protected(保护访问控制符)指定该方法可以被它的类和子类进行访问。

final,指定该方法不能被重载。

static,指定不需要实例化就可以激活的一个方法。

synchronize,同步修饰符,在多个线程中,该修饰符用于在运行前,对他所属的方法加锁,以防止其他线程的访问,运行结束后解锁。

native,本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值