今天看了几个题目,感觉基础比较扎实了,但是结果…话不多说记录一下. 一: 静态方法可以被重写吗? 静态的?法可以被继承,但是不能重写。如果?类中有?个静态的?法,?类也有?个完全一样的方法,那么该?类的?法会把?类的?法隐藏,?不是重写。通俗的讲就是?类的?法和?类的?法是两个没有关系的?法,具体调?哪?个?法是看是哪个对象的引?;这种??类?法也不在存在多态的性质。《Java编程思想》中这样提到“只有普通的方法调用可以是多态的”。
public class BeanInfoTest {
public static void main(String[] args) {
Father son = new Son();
son.say();
}
}
class Father{
public static void say(){
System.out.println("I am father");
}
}
class Son extends Father{
public static void say(){
System.out.println("you are son");
}
}
上面的执行结果是"I am father",也就是Father类型的引用调用的.
二: 抽象的(abstract)方法是否可同时是静态的(static)? 不能,抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。
补充:
接口中方法是 public abstract 接口中变量是 public static final
抽象类中可以定义构造器,接口不能; 在jdk1.8中,接口里可以有静态方法和default方法,接口中这两种方法必须要有body, ----------------但此时方法修饰符 默认public abstract + static 和上面的问题二冲突了
|