1.关键字总览
访问控制 | private | protected | public | ||||||
---|---|---|---|---|---|---|---|---|---|
类,方法和变量修饰符 | abstract | class | extends | final | implements | interface | native | new | static |
strictfp | synchronized | transient | volatile | ||||||
程序控制 | break | continue | return | do | while | if | else | for | instanceof |
switch | case | default | |||||||
错误处理 | try | catch | throw | throws | |||||
包相关 | import | package | |||||||
基本类型 | boolean | byte | char | double | float | int | long | short | null |
true | false | ||||||||
变量引用 | super | this | void | ||||||
保留字 | goto | const |
2.详细解释
访问控制
private:
可以修饰类,方法,字段。
修饰类只能修饰内部类,无法修饰普通类,且这个内部类只有包含它的类才能访问它的内部的变量和方法,包括私有的变量和方法。
修饰方法,表示该方法只有在包含它的类中可以使用,无法被外部调用
修饰字段,表示该字段只在包含它的类中可以被使用,无法被外部访问使用
protected:
可以修饰类,方法,字段。
修饰类只能修饰内部类,无法修饰普通类,且这个内部类只有同一个包下的类才能访问它的内部的非私有的变量和方法,同理,包含该内部类的外部类还是可以访问这个类所有变量和方法。
修饰方法,表示该方法在同一个包中都可以被访问调用,无法被包外的调用
修饰字段,表示该字段在同一个包中都可以被访问调用,无法被包外的调用
public:
可以修饰类,方法,字段
就是公开了,谁都可以看到,谁都可以访问使用
类,方法和变量修饰符
本来想太多了,不想一个一个写了,想想还是写吧
abstract:
可以修饰类和方法,修饰类表示这个类是抽象类,修饰方法表示这个方法是抽象方法,一个抽象类不一定要有抽象方法,但是有抽象方法一定是一个抽象类。
这里扩展一下,那抽象类和普通类有什么区别呢?
1.抽象类不能被实例化
2.抽象类可以有构造函数,被继承的时候必须继承父类的一个构造方法,当抽象类有多个且有一个无参构造器,子类继承会默认继承父类的无参构造器。抽象方法不能被声明为静态
3.抽象方法只需要声明,不需要实现
4.含有抽象方法必须是抽象类
5.抽象的子类必须实现抽象类中所有方法,否则子类也是抽象类
class:
该关键字就是用来声明新的类的,而类就是面向对象程序设计方法的基本单位
extends:
该关键字用于class,interface。Java中只有单继承,但是接口可以继承多个接口
子类继承父类所有非私有的方法和变量,可以重写父类任何非私有非final的方法
final:
可以用于类,方法,变量
修饰类表示该类无法被继承,修饰方法表示该方法无法被重写,修饰变量的话,无法被修改,修饰对象,表示对象引用无法被修改,但是对象里的值还是可以被改变的
所有一个类不能被final和abstract同时修饰,因为这边不让继承,而抽象类需要被继承
implements:
作用于类上,用于实现interface,一个类可以实现多个接口
interface:
该关键字用来实现新的Java 接口,接口中的方法都是没有方法体的,但是JDK8后,可以有默认实现 ,可以有静态方法,但是静态方法必须要有方法体
接口中的方法默认为public,且只能为public
接口中的变量和对象都默认为public static final,且必须初始化
native:
用于方法,被这个修饰的方法表示是原生函数,是用C/C++写的,由Java去调用
new:
用于创建类的实例
static
可以修饰类,方法,成员变量,同样只能修饰内部类
《Java编程思想》有一段话:
static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的,而且在可以在没有创建任何对象的前提下,仅仅通过类的本身来调用static方法。这实际上正是static方法的主要用途
简而言之,就是方便在没有对象的情况下来调用
静态方法:
不依赖任何对象就可以进行访问,因此对静态方法来说是没有this的,因为它不依附于任何对象