先说final吧!有这个关键字修饰的方法是不能被重写的,也就是说子类里面不能有同名方法的。而abstract是抽象方法,必须在子类里面被实现或者保持抽象修饰。所以这两个概念可以说是完全相反的,所以不能修饰同一个方法
static修饰的方法或者变量是一个类的方法和变量,而不是类对象的。为什么静态方法一定要使用静态方法。//////不太明白
static修饰的方法或者变量是一个类的方法和变量,而不是类对象的。为什么静态方法一定要使用静态方法。//////不太明白
---------------------------------------------------------------------------------------
静态method是在内存分配中就分配了特定得入口地址,该入口地址直到程序结束后才退出取消,这就迫使要相应的掉用static 变量,如果不调用static 变量,普通的变量一到方法运行结束就释放了她的内存就找不到特定的内存地址,这是不符合静态方法的设定的
__________________________________________________________
final
final类是不能继承的,final方法是不能重写的,final变量就是常量了
这是出之安全性的考虑,由于她的不可变性,对编译器或解释器的正常运行有很大的帮助
String就是不可变类哈哈
__________________________________________________________
abstract类就只关心她子类有那种功能,并不关心具体实现,其功能由子类实现
avstract方法就不能实现,只能申明,一定要在抽象类中
public static String st = "Static string"; //静态变量
public static void fun(){ //静态方法
System.out.println(st);
}
public static void main(String[] args){
System.out.println(TestSt.st); // * 1
System.out.println(st); // * 2
// 1 2 行的运行效果一样.要注意到这两个"静态方法都没有属于某个对象"
// 实际上静态方法就是可以不用创建变量就可以通过类名直接用的方法.
TestSt.fun();
}
}
abstract 修饰方法后用来被继承,且不能有实现部分
所以不能使用,只能调用静态的数据成员(有默认值)的.
2、final的方法是不可以被overload的,
而abstract是必须被overload的,矛盾,
所以不可以同时使用.