JAVA部分关键字分析
一、关键字的定义:编程语言中具有固定含义的固定单词,不能用于定义类名,变量或常量名,方法名等。(通常会有颜色区分)
二、关键字的分类:
1)访问的权限: public、protected、private
2)基本的数据类型:int、double、float、char、long、short、boolean、byte
3)与类相关:class、abstract、extends、interface、implements、import等
4)异常:try、catch、finally、throw、throws等
5)与类对象相关的:new、this、super
6)与循环相关的:for、while、do...while
7)与判断相关的:if、else、else if、switch、case、default、break、continue
8)其他:instanceof、static、final等
三、重点分析关键字
1、访问权限:用于修饰当前属性或方法的使用范围
a)JVAV语言中的访问权限有四种(但是关键字只有三种):公有(public)、保护(protected)、默认(无关键字)、私有(private)
访问权限从大到小分别为: 公有(public)>保护(protected)>默认(无关键字)>私有(private)
b)访问权限可以用来修饰类、属性和方法
在定义类时:只能用public或默认不写来修饰。当一个文件中拥有多个类,则必须有一个类与文件同名,该类为文件的主类,如果有public修饰也只能修饰主类,并且只能有一个public
在定义类时:只能用public或默认不写来修饰。当一个文件中拥有多个类,则必须有一个类与文件同名,该类为文件的主类,如果有public修饰也只能修饰主类,并且只能有一个public
在定义属性(常量或是变量)时:接口中所有的属性都必须是public。定义的完整格式:public static final 返回类型 属性名(赋值); 需要赋值。因为在接口的属性定义中所有的格式都一样,因此在一些版本的编译器中可以省略public static final,意义一样。
在定义方法时:接口中的所有方法都必须是public,public 返回类型 方法名();
构造方法也可以修改访问权限,例如为了不让外部创建当前类的对像时,可以把当前类的构造方法的访问权限设置为private;
当子类继承父类,子类需要重写父类的方法时,所重写的方法的访问权限只能扩大或者不变,不能缩小,公有(public)>保护(protected)>默认(无关键字)>私有(private)
构造方法也可以修改访问权限,例如为了不让外部创建当前类的对像时,可以把当前类的构造方法的访问权限设置为private;
当子类继承父类,子类需要重写父类的方法时,所重写的方法的访问权限只能扩大或者不变,不能缩小,公有(public)>保护(protected)>默认(无关键字)>私有(private)
访问权限 | 当前类 | 共同包 | 不同包的继承 | 不同包 |
public | Yes | Yes | Yes | Yes |
protected | Yes | Yes | Yes | No |
默认(不写) | Yes | Yes | No | No |
private | Yes | No | No | No |
2、与对象相关的:new、this、super
new:是指创建一个类的对象,类名 对象名 = new 类名();
this:指的是当前类的对象
a):在普通方法中使用this,指的是调用当前类的相关属性和方法,this.属性;或this.方法名();
b):在构造方法中使用this,指的是调用当前类的其它构造方法, this();(不需要加点)要注意的是当在构造方法中使用了this();则this();必须放在构造方法的第一行
public class Student {
public String name;
public Student() {
this("aa");
System.out.println("构造方法1");
}
public Student(String n) {
this(20);
System.out.println("构造方法2");
}
public Student(int a) {
System.out.println("构造方法3");
}
}
输出:构造方法3,构造方法2,构造方法1
super:指的是当前类的父类的对象
a):在普通方法中使用super,指的是调用父类的普通方法,super.方法名();
b):在构造方法中使用super,指的是调用父类的构造方法, super();(不需要加点)
注意:方法的重写:完全覆盖父类的方法,不加super.方法名(); 对父类的方法进行改造,添加super.方法名();
每一个子类的构造方法都会调用一个父类的构造方法,用来初始化父类的属性
如果是在构造方法中调用super();则super()必须放在第一行
如果想要同时调用this();和super();则super()一定只能隐性定义
a):在普通方法中使用super,指的是调用父类的普通方法,super.方法名();
b):在构造方法中使用super,指的是调用父类的构造方法, super();(不需要加点)
注意:方法的重写:完全覆盖父类的方法,不加super.方法名(); 对父类的方法进行改造,添加super.方法名();
每一个子类的构造方法都会调用一个父类的构造方法,用来初始化父类的属性
如果是在构造方法中调用super();则super()必须放在第一行
如果想要同时调用this();和super();则super()一定只能隐性定义
3、其他:instanceof、static、final等
final:是指最终的,用于修饰类、方法、属性、参数和局部变量等
修饰类时:不能被继承的类,接口和抽象类一定不能用fianl修饰
修饰方法时:被修饰的方法不能被子类重写
修饰属性时:表示该属性只能被赋值一次
修饰参数和局部变量时:表示该参数或局部变量在他们的生命周期内不能再被修改
注意:匿名内部类使用外部类的局部变量一定要用fianl修饰
static:是指静态的,用于修饰属性,方法,静态块等
用static修饰的属性,方法等,都是依赖于当前类而生存,脱离了类对象的束缚
静态块:static{};加载类的时候自动执行
用static修饰的属性,方法等,都是依赖于当前类而生存,脱离了类对象的束缚
静态块:static{};加载类的时候自动执行
instanceof:作用是用于校验当前的对象转型之前的类型是什么 对象名 instanceof 所判断的类的类名 返回值是true和false