1.static
修饰变量:静态变量,只有一个存储位置,由所有类的对象共享,牵一发动全身
修饰方法:称为静态方法,只能直接访问静态数据或调用静态方法;
不用创建类的对象,直接使用类名就可调用
2.this关键字
含义:不论是该类生成的哪个对象调用了含有this的这个方法,
都会生成一个指向这个对象的引用this;
示例
public class Main {
private String name ;
private double salary;
public Main(String name, double salary){
this.name = name;
this.salary = salary;
}
public Main(String name){
this(name,0);//用this语句调用同类的重载构造函数,此语句需放在第一行
}
public static void main(String[] args) {
Main a = new Main("hello");
Main b = new Main("2",900);
System.out.println(a.name);
System.out.println(a.salary);
System.out.println(b.name);
System.out.println(b.salary);
}
}
3.abstract关键字
abstract关键字用来修饰方法和类,用abstract修饰的方法叫做抽象方法,
抽象方法没有方法体,即没有实现
规则:
含有抽象方法的类必须被定义为抽象类;
抽象类必须被继承,抽象方法必须被重写;
抽象方法必须被声明,不需实现,即没有方法体;
抽象类不能进行实例化;
抽象方法或抽象类不能定义为最终的,即abstract和final关键字不能共存;
抽象方法不能被声明为静态的;
4.final关键字
在运行时多态中,方法的重定义是重点。但是,使用final关键字的时候,方法是不允许重定义的。
final关键字可以修饰类,方法,以及普通变量,有以下特点:
1.final类不能被继承,没有子类
2.final类的方法默认是final的;
3.final方法不能被子类重定义,但可以被继承;
4.final变量只能一次赋值,不可更改;
5.final不能用来修饰构造方法;
修饰普通变量
public class Main {
static final int i2 = 99;
static final int i1 = 9;
static final int i4 = (int)(Math.random()*20);
public static void main(String[] args) {
System.out.println(i1);
System.out.println(i2);
System.out.println(i4);
}
}
空白final数据成员
又想将数据类型声明为final,又想在初始化时自定义
public class Main {
final int i = 0;//有初始化的final常量
final int j; //空白的final数据成员
Main(){
j = 1;
}
Main(int x){
j = x;
}
public static void main(String[] args) {
}
}
final修饰方法参数(相当于const)
目的:
*若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采用这种做法
*提高运行效率
注意:final修饰方法不能被重定义,一个普通类内所有private方法都自动成为final方法
final修饰类
如果整个类都是用final来修饰的,就表明程序不允许从这个类继承任何内容;
总结
final作用于变量,表明变量的值不可改变;
final作用于对象,表明句柄不可以被改变,但引用对象内部的值可以改变;
final作用于方法,表明方法不可重定义;
final作用于方法中的参数,表明参数内容不可被改变,等价于const;
final作用于类,表明类不可以被继承,但类中的数据可以被改变;