常用关键字
一、访问修饰符
访问修饰符可以修饰类 方法 属性等。。。java中的访问修饰符共4种:分别是:public(公有的)、protected(受保护的)、默认的、private(私有的)。
4中访问修饰符的可见范围不同:
被public修饰的类、方法、属性等,在同一个项目下的所有包中的所有类都可以使用;
被protected修饰的类、方法、属性等,在同一个包内可以被任意调用,同时也可以在子类中被调用。
默认的,在同一个包内可以被任意调用,但与protected修饰符不同,默认的不可以在子类中被调用。
被private修饰的方法、属性等,意义为“私有的”,只能在同一个类中被调用。
在使用时,直接加在被修饰的类、方法或属性名前即可,如:
public Student() {
this(null, 0);
}
二、this、super、final
this:
1、在调用属性或者方法时,可代指本类中的对象。格式为:this.属性名或方法名;
2、在构造方法中调用本类的某一个构造方法(参数数量和顺序必须对应)格式:this(参数);
举例如下:
public class Student {
//一个“学生”类
//定义属性
public String name;
private int num;
//创建一个构造方法,在该构造方法中调用本类的另一个构造方法时,运用到this关键字。
public Student() {
this(null, 0);
//调用的是含两个参数的构造方法。
}
//含一个name参数的构造方法
public Student(String name) {
this(name, 0);
}
//含两个name和num参数的构造方法,无参的构造方法调用的既是该构造方法。
public Student(String name, int num) {
//在这里this表示本类的对象,this.name即表示该对象的name属性。
this.name = name;
this.num = num;
}
public void test() {
System.out.println("父类的方法!!");
}
}
super:
1、在子类中有时需要调用父类的方法,需要用到super。此时super代指父类的一个对象。格式:super.方法名;
2、在子类的构造方法中调用父类的构造方法。必须使用super关键字,同样,参数的数量和顺序必须对应。格式:super(参数);
举例如下:
public class UNStudent extends Student{
//创建一个“大学生”子类继承“学生”父类
//创建一个构造方法
public UNStudent(){
super(null);
//在该子类的构造方法中,使用super关键字
//调用父类的带有一个String类型参数的构造方法。
}
public void change(){
//使用this关键字调用本类(子类)中的test方法。
this.test();
//使用super关键字调用父类中的test方法。该super代指父类的一个对象
super.test();
}
//重写时不能减小方法的可见范围
public void test() {
System.out.println("子类的方法!!");
}
}
final:
final的中文意思为最后的,最终的;决定性的;不可更改的。类似于C语言中的const关键字,它限定一个变量不允许被改变。
final可以修饰类,所修饰的类可理解为“最后的类”,不能被继承。final类与普通类的使用几乎没有差别,只是它失去了被继承的特性。使用时要慎重。
也可修饰属性,所修饰的属性可理解为“不可更改的属性”,为常量。当在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化其值便不可变,其初始化可以在两个地方,一是在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,不能同时既在定义时给了值,又在构造函数中给另外的值。
还可修饰方法,所修饰的方法可理解为“最终的方法”,不可被重写。将方法声明为final,就说明这个方法提供的功能已经满足要求,不需要进行扩展,并且也不允许任何从此类继承的类来重写这个方法,但是继承仍然可以继承这个方法,可以直接调用该方法。
三、static(静态的)
static除了可以修饰类,方法和属性外,还可以直接修饰代码块。如:
static{
System.out.println("A");
}
1、static修饰属性时,属性为静态属性,又称为“类属性”,可以不创建类的对象而直接调用,也表示该类所有的对象共享的一个属性,因此,当某一个对象的static属性值被改变后这个类所有对象的static属性值都会被改变。
举例如下:将上述代码中父类的name属性定义为static
在主函数中调用时:
Student stu1 = new Student();
stu1.name = "孙茜";//等价于Student.name = "孙茜"
UNStudent stu2 = new UNStudent();
stu2.name = "张晓玥";//等价于Student.name = "张晓玥"
当再次输出stu1的name时,显示的仍为“张晓玥”,因为当某一个对象的static属性值被改变后这个类所有对象的static属性值都会被改变。
2、static修饰方法,在调用时只跟类名有关。但在static方法中,则只能直接调用static属性,非static属性,就必须通过创建对象来调用。
<!--EndFragment-->