final和static为什么不能共存?

今天在myeclipse中编译java程序,偶然发现一个方法加final后,加了static后,编译器会报错,也就是编译通过不了,出现编译错误。

1、首先,被static修饰的方法在和没有static修饰的方法在内存中的位置不一样。。      

2、使用方式不同。

因为static修饰的方法是静态方法,其可以直接被类所调用。

被static修饰的方法属于类,是类自己的东西,不是给子类来继承的。就好像类是个房子,它的静态方法是里面的一面墙,每个人都可已在墙上画画,你画的东西别人也能看到,属于大家共同使用。你想通过继承来把这面墙拿走也不可能拿走,他是从属于类的。
而abstract修饰的方法为抽象方法,即无方法体的方法,不能够被直接调用,需要在子类或实现类中去编写完整的方法处理逻辑后才能使用。。用static修饰就不能被子类继承了。同样 你可以这么理解。
抽象方法相当于房子中地上的白纸,继承了它的子类就必须从地上拿一张白纸回去画画,只能使用,而且别人也能用。
一个相当于墙,你是拿不走的。一个相当于地上的纸,而且规定你实现了就必须拿走。

 

 


 

你可能感兴趣的:(java,java)