黑马程序员技术交流社区

标题: 关于接口的一个问题,希望帮助解决一下············ [打印本页]

作者: 王勇    时间: 2014-5-23 17:12
标题: 关于接口的一个问题,希望帮助解决一下············
本帖最后由 王勇 于 2014-5-28 18:28 编辑

如果子类实现了某一接口,并覆写了接口中的某一方法,这样我覆写的这一方法是否为静态的????
我们知道接口中的方法都是受:public abstract static 所修饰的,那么子类实现覆写以后有什么不同????


作者: never615    时间: 2014-5-23 17:19
首先明确一点!  没有抽象静态方法。 static 和 abstract不能连用

1. 接口中的成员变量默认都是public、static、final类型的,必须被显式初始化
2. 接口中的方法默认都是public、abstract类型的。
作者: never615    时间: 2014-5-23 17:23
关于方法覆写:
1. 方法的参数签名和返回值类型必须相同,访问控制修饰符可以不同,但是子类方法不能缩小父类方法的访问权限。
2. 子类方法抛出的异常必须和父类方法抛出的异常相同,或者是父类方法抛出的异常类的子类。
3. 父类的静态方法是不能被子类覆盖为非静态方法。
父类的非静态方法不能被子类覆盖为静态方法。
4. 子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法。区别:运行时,JVM把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。
5. 父类的私有方法不能被覆盖
6. 父类的非抽象方法可以被覆盖为抽象方法
作者: gentleman    时间: 2014-5-23 17:32
abstract不能与private,final,static一起用

作者: 陨落″烟雨。    时间: 2014-5-23 17:51
上面的兄弟说的默认修饰符没错
属性默认:public static final int x = 10;
方法默认:public abstract void show();


接口:其实定义的是一种规则,就是说,不管是什么类想去用接口中的方法,就要去实现接口里面的方法!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2