java修饰符

java修饰符

java中的修饰符分类:

  • 权限修饰符: private, default, protected, public
  • 状态修饰符: static, final
  • 抽象修饰符: abstract

一,权限修饰符:private, default, protected, public

private:

如果实体使用private修饰符声明,那么实体将只能由定义实体的类中的包含的代码访问。它的访问权限仅限于类的内部,是一种封装的体现。这样,就不能从类的外边直接访问他们,我们提供set和get方法,保证类中数据域的安全。

default:

默认修饰符,什么都不加,实际上它限制的范围就是一个包内可以访问。如果不在一个包内,即使继承关系任然是不能访问的。它是针对本包访问而设计的,任何处于本包下的类,接口,异常等,都可以互相访问,即使是父类没有用protected修饰的成员也可以

protected:

经常需要允许子类访问定义在父类中的数据和方法,但是不允许非子类访问这些数据和方法,这种情况下就可以使用protected,它允许任何包中的子类访问父类。

public:

具有最大的访问权限,可以访问任何一个CLASSPATH下的类,接口、异常等。它往往对于对外的情况,也就是对象或类对外的一种接口形式。

在这里插入图片描述

二,状态修饰符:static, final

static修饰符

static的主要作用在于创建独立于具体对象的域变量或者方法。

语法格式:

修饰变量:static 数据类型 变量名

修饰方法:【访问权限修饰符】 static 方法返回值 方法名(参数列表)

特点

static可以修饰变量,方法被static修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享。

在类被加载的时候,就会去加载被static修饰的部分。被static修饰的变量或者方法是优先于对象存在的,也就是说当一个类加载完毕之后,即便没有创建对象,也可以去访问。

static静态变量

static修饰的成员变量叫做静态变量,也叫做类变量,说明这个变量是属于这个类的,而不是属于是对象,没有被static修饰的成员变量叫做实例变量,说明这个变量是属于某个具体的对象的。

静态变量与非静态变量的区别
  • 静态变量可以直接使用类名调用。

  • 静态变量被所有对象共享,在内存中只有一个副本,在类初次加载的时候才会初始化。

  • 静态变量一旦变化,所有的实例的静态变量值都会变化。

  • 非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响

  • 非静态方法可以调用静态变量、静态方法和非静态变量、非静态方法。

static静态方法
  • 被static修饰的方法也叫做静态方法,因为对于静态方法来说是不属于任何实例对象的,那么就是说在静态方法内部是不能使用this的。
  • 由于这个特性,在静态方法中不能访问类的非静态变量和非静态方法,因为非静态方法/变量都是须依赖具体的对象才能够被调用。
  • 在静态方法中不能访问非静态方法和非静态变量,但是在非静态方法中是可以访问静态方法/静态变量。

final 修饰符

final 关键字可以用于修饰类,方法和变量

1、final关键字通常与static修饰符一起使用来创建类常量
2、 final 修饰成员变量
  • 必须要赋初始值,而且是只能初始化一次。
  • 被fianl修饰的成员变量赋值,有两种方式:1、直接赋值 2、全部在构造方法中赋初值。
  • 如果修饰的成员变量是基本类型,则表示这个变量的值不能改变。
  • 如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的。
3、final 关键字修饰方法时,则该方法不能被重写
  • 一个类的private方法会隐式的被指定为final方法。
  • 如果父类中有final修饰的方法,那么子类不能去重写。
4、final 关键字修饰类时,该类不能被继承
  • 被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为fianl。
  • final类中的成员方法都会被隐式的指定为final方法。

三,抽象修饰符:abstract

abstract修饰符

用abstract关键字来修饰该类[抽象类],用abstract来修饰该方法[抽象方法]。

抽象类:
  • 抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在子类中实现抽象类。
  • 抽象类不能被实例化。因为抽象类中方法未具体化,除此之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
  • 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。
  • 抽象类中不一定要包含abstract方法。也就是抽象中可以没有abstract方法。
抽象方法:
  • 用abstract来修饰该的抽象方法只包含一个方法名,不能有方法主体。
  • 抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。
  • 一旦类中包含了abstract方法,那类该类必须声明为abstract类。
  • 17
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值