https://blog.csdn.net/qq_29440353/article/details/89091681
https://www.cnblogs.com/zhuyeshen/p/10777662.html
抽象类中不能有static修饰的方法。
打个比方:
1. 被static修饰的方法在和没有static修饰的方法在内存中的位置不一样。。
2. 被static修饰的方法属于类,是类自己的东西,不是给子类来继承的。就好像类是个房子,它的静态方法是里面的一面墙,每个人都可已在墙上画画,你画的东西别人也能看到,属于大家共同使用。你想通过继承来把这面墙拿走也不可能拿走,他是从属于类的。
3. 而抽象方法本身没有实现,就是用来给子类继承,存在内存中的位置也不是一样的。用static修饰就不能被子类继承了。同样 你可以这么理解。
4. 抽象方法相当于房子中地上的白纸,继承了它的子类就必须从地上拿一张白纸回去画画,你想怎么画怎么画。
5. 一个相当于墙,你是拿不走的。一个相当于地上的纸,而且规定你实现了就必须拿走。
抽象类中不能有final,private修饰的方法:
抽象方法的最实质的意义在于被未来的子类覆盖实现掉。它自己是个空方法。
private的实质意义在于本类其他方法调用它。你自己是个空方法,别人调用你有什么用?所以abstract和private在一起毫无意义。
final规定子类不能再覆盖它。abstract是专等着要别人来覆盖,二者矛盾。所以不能放在一起使用。