java中常用的关键字_一文带你搞懂Java中常用的关键字(持续更新中)

一文带你搞懂Java中常用的关键字(持续更新中)

一文带你搞懂Java中常用的关键字(持续更新中)

文章目录一、用于定义访问权限修饰符的关键字private ,default ,protected,public

二、用于定义类,函数,变量修饰符的关键字abstract ,final,static,synchronized

三、用于定义类与类之间的关键字extends,implements

四、用于定义建立实例及引用实例,判断实例的关键字new,this,super, instanceof

private ,default ,protected,public

1.private

(1)在同一类内可见,可以修饰变量和方法,不能修饰外部类。

(2)最严格的访问级别:被声明为private的方法、变量和构造方法只能被所属类访问,并且类和接口不能被声明为private。

(3)声明为私有类型的变量只能通过类中公共的getter方法被外部类访问。

2.default

这是默认情况下的访问修饰符,可以修饰变量和方法,对同一个包里的类是可见的;还可以修饰类和接口,在同一包内可见。

3.protected

对同一包内的类和所有子类可见,可以修饰变量、方法,不能修饰外部类。

如果子类和基类在同一个包中:被声明为protected的变量、方法和构造器能被同一个包中的任何其他类访问。

如果子类和父类不在同一个包中:那么在子类中,子类实例可以访问其从父类继承来的protected方法,而不能访问父类实例的protected方法。(也就是表中的说明那里)

(1)protected可以修饰数据成员,构造方法,方法成员,不能修饰类(内部类除外)。

(2)接口以及接口的成员变量和成员方法不能声明为protected。

(3)如果我们只想让该方法对其所在类的子类可见,则将该方法声明为protected。

4.public

(1)被public修饰的类、方法、构造方法和接口能被任何其他类访问。

(2)如果几个相互访问的public类分布在不同的包中,则需要导入public类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类所继承。

aea2169bc5dd32c727d19a2350535cbf.png

abstract ,final,static,synchronized

1.abstrcat

abstract可以修饰类的时候,表明该类是抽象类。

(1)抽象类不能用来实例化对象,这样声明的目的是将来对该类进行补充。

(2)一个类不能同时被abstract和final修饰,如果一个类包含了抽象方法,那么该类一定要声明为抽象类,否则会编译错误。

(3)抽象类可以包含不抽象的方法。

abstract可以修饰方法的时候,表明该方法是抽象方法。

(1)抽象方法是一种没有任何实现的方法,该方法的据图实现由子类提供。

(2)抽象方法不能被声明成final和static。

(3)任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。

(4)抽象方法的声明由分号结尾,例如public abstract sample();

2.final

final修饰变量

(1)final修饰变量后,还变量不能被重新赋值,被final修饰的变量一定要显示指定初始值。

当然也可以这样:

bb9c4bc82fce2ba73cf34271e90b6a81.png

(2)final修饰符通常和static修饰符一起使用来创建类的常量:static写在前边

2445ec73ae1e224218d580239503ee39.png

final修饰方法

(1)父类的final方法可以被子类继承,但是不能被子类重写。

(2)声明 final 方法的主要目的是防止该方法的内容被修改。

a27b45bfa9fc17564a1918ccbdd98378.png

final修饰类

final修饰类的时候,该类不能被继承,没有类能够继承final类的任何特性。

3.static

static可以修饰变量、方法,代码块。不管修饰什么都是将它和它所属的类的对象解绑,成为类的一部分。

7e3b9a30cd3004b095018601773f7050.png

static修饰变量

(1)无论一个类实例化多少个对象,它的静态变量只有一份拷贝,静态变量也叫类变量。

(2)被static修饰前,成员变量属于类实例存放在堆中。被static修饰后,成员变量属于类,存放的位置发生变化,放在方法区中。

static修饰方法

静态方法不能使用类的非静态变量。静态方法是参数列表中得到数据,然后计算这些数据。

929e63938bdb57b4eb1b143b3f530b60.png

4.synchronized

对于synchronized声明的方法在同一时间只能被一个线程访问,是一种同步锁。

它可以修饰代码块,方法,静态方法,类。

修饰代码块

(1)被修饰的代码块称为同步代码块,范围是{括起来的代码},作用的对象是调用这个代码块的对象(它会锁定当前的对象)。

(2)一个线程访问一个对象中的synchronized修饰的同步代码块时,其他访问该对象的线程将会被阻塞;访问该对象的非同步代码块不受影响。

0be81c75dd41518b9d316349f9ffc9e3.png

修饰方法

(1)当修饰方法时,它的作用范围会改变到整个方法。

35920d94c20b0a1cddf6dd42aadf5fca.png

(2)synchronized修饰方法的时候并不能被继承:

虽然可以使用synchronized来定义方法,但synchronized并不属于方法定义的一部分,因此,synchronized关键字不能被继承。如果在父类中的某个方法使用了synchronized关键字,而在子类中覆盖了这个方法,在子类中的这个方法默认情况下并不是同步的,而必须显式地在子类的这个方法中加上synchronized关键字才可以。当然,还可以在子类方法中调用父类中相应的方法,这样虽然子类中的方法不是同步的,但子类调用了父类的同步方法,因此,子类的方法也就相当于同步了。

adc8052b364469c5c640d5bda158ac84.png

(3)在定义接口方法的时候不能使用synchronized关键字。

(4)构造方法不能使用synchronized关键字,但可以使用synchronized代码块来进行同步。

(5)我们知道静态方法是属于类的而不属于对象的。同样的,synchronized修饰的静态方法锁定的是这个类的所有对象,相当于是所有对象用的是同一把锁。

修饰类

(1)用法如下:

44cc6c67c6773159417f072a3f93a1cc.png

synchronized作用于一个类T时,是给这个类T加锁,T的所有对象用的是同一把锁。

总结

A. 无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。

B. 每个对象只有一个锁(lock)与之相关联,谁拿到这个锁谁就可以运行它所控制的那段代码。

C. 实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。

extends,implements

1.extends

在Java中通过extends继承一个已有的类,被继承的类称为父类(超类、基类),新的类称为子类(派生类),在Java中不允许多继承,但是可以多层继承。

(1)子类继承父类时,可以重写(也称覆盖)类的方法,也可以不重写。重写后就实现了新的功能,不重写就实现父类的功能。

(2)方法的重写发生在子类与父类之间。另外,可用super提供对父类的访问实现父类的功能。

不懂重载和重写的区别的老铁点击这里 传送门

2.implements

implements是实现接口的关键字,用法如下:

2615438d13c763f3003648a0a3eb0756.png

实现接口的注意点

(1)实现一个接口就要实现该接口的所有方法(如上图)。

(2)接口中的方法都是抽象的。

(3)多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。

(4)JAVA中不支持多重继承,但是可以用接口来实现,这样就用到了implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了,比如 class A extends B implements C,D,E {} 。

new,this,super, instanceof

1.new

一文带你搞懂Java中常用的关键字(持续更新中)相关教程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值