static:
1、通常用于修饰方法和变量,static修饰的方法和变量归类所有,可以用类.方法名和类.变量名直接使用
2、static修饰的方法不能在非static的中直接调用,要实例化类对象才能调用
3、static修饰的变量比如:public static int a=5;
会在内存中只开辟一个空间,表名这是一个全局变量,不会再创建新的空间,static修饰的int等类型的值是可以改变的。
final:
1、final修饰类时,表名这个类已经很完美了,所以不需要被重写和继承。
2、final修饰方法时,表示这个方法也很完美,不需要被重写,但是子类可以继承直接使用。
3、final修饰属性(对象或者叫变量)时:
final修饰8种基本类型的变量时,变量的值不可以改变。
final修饰对象时,对象的值可以 对象名.append(""),但是不可以再实例化一次该对象。
final和abstract不可以共用:原因1:final类表示完美不需要继承重写,abstract类表示要子类继承。原因2:修饰方法时:final表示完美
不需要重写,只能子类继承使用,而abstract中的方法没有东西,所以并不完美。以上两点都是冲突的。故不成立。
abstract(抽象):
解释:在java种,对象是通过类来描绘的,但是有一种类叫做抽象类,不用来描绘对象。
1、abstract修饰类时,表明这是一个抽象类,抽象类不可以实例化对象,但是可以被继承,子类创建实例化对象来调用方法。
2、抽象类中可以有main方法,也可以有普通方法,又可以没有抽象方法,但是有抽象方法的类一定是抽象类。
3、子类继承了抽象类,就必须继承父类的抽象方法,非抽象方法不要求继承,如果子类是抽象类的话,也可以不继承父类的抽象方法。
4、abstract修饰方法时候,如下:public abstract int check();抽象方法没有方法体;可以由子类重写来具体实现。
5、抽象类是可以继承普通类的。
接口(interface):
1、接口可以看作一个特殊的抽象类,但是两个是不同的概念,类描述对象的属性和方法,接口则包含类要实现的方法。
通常把接口中的abstract省略。
2、接口的实现类必须实现接口中的所有方法。
3、抽象类也可以实现接口,接口可以继承接口,毕竟接口也是一个特殊的抽象类,既然是抽象类为什么不能继承类呢?
4、既然我们知道接口是一个特殊的抽象类,所以接口和抽象类一样不能实例化对象。
5、接口不能包含成员变量,除了 static 和 final 变量。