- 关键字static
- static修饰属性
(1)当用static定义属性时,此属性不保存在堆内存中,而是保存在一个全局数据区的内存空间中,并且所有对象都可以进行该数据区的访问。(也就是说加上static关键字就相当于共享了)
(2)static修饰的属性可以直接通过类名称调用。例Person.country=中国。
(3)static不受对象是否实例化的影响。 - static修饰方法
(1)使用static定义的方法可以直接被类名称进行访问,同样不受对象是否实例化的影响。
(2)所有static方法不允许调用非static定义的属性或方法;
(3)所有非static方法允许访问static定义的属性或方法。
(原因:static属性或方法可以在对象没有实例化时进行访问,但非static必须在对象实例化后才能操作)
- 关键字this
- this调用属性
只要在类的方法中访问类的属性,就要在属性前面加“this”关键字。 - this调用方法(普通方法和构造方法)
(1)普通方法:this.方法名称(参数…)
构造方法:this.(参数…)
(2)构造方法和普通方法最大的区别:构造方法是使用关键字new实例化新对象的时候使用一次,而普通方法是进行对象实例化以后,可以多次调用。
(3)用this可以实现构造方法的互相调用,但是有一下的要求:
this()调用构造方法的语句必须放在构造方法的首行; this互相调用构造方法时要有出口。
代码示例:
class Person{//Person类
private String name;//属性
private int age; //属性
public Person() {
System.out.println("***");
}//构造方法
public Person(String name) {
this();
this.name=name;
}
public Person(String name,int age){
this(name);
this.age=age;
}
public void getInfo(){//普通方法
System.out.println("name="+name+",age="+age);
}
}
- this表示当前对象
在某一对象调用了本类中的方法,那么这个this就表示当前执行的对象,所以说this不是固定的概念,而是一个相对的概念。
- 关键字super
super.方法(),super.属性明确的调用父类的方法和属性。
比较this关键字和super关键字:
No | 区别 | this | super |
---|---|---|---|
1 | 概念 | 调用本类属性、方法 | 由子类访问父类的属性、方法 |
2 | 查找范围 | 先查找子类,如果子类没有则调用父类 | 不查找子类,而直接调用父类的定义 |
3 | 特殊 | 表示当前对象 | —— |
- 关键字final
在java中final被称为终结器,可用final定义类、方法、属性。
- 用final定义的类不能有子类
final class A{}//A类不能有子类
- 用final定义的方法不能被子类所覆写
class A{
public final void fun() {}
}
class B extends A{
public void fun() {}//错误
}
- 用final定义的变量就成了常量,常量必须在声明时赋值且不能修改。
public static final int LEVEL_A=100;
注:常量的标识符必须全部采用大写字母的形式出现。