黑马程序员技术交流社区
标题:
关于接口继承的问题
[打印本页]
作者:
kj1989
时间:
2014-3-16 15:37
标题:
关于接口继承的问题
本帖最后由 kj1989 于 2014-3-20 20:19 编辑
如果一个类没有全部实现接口中的方法,那么该类在被调用时会发生何种情况?
作者:
dapeng111
时间:
2014-3-16 15:50
如果一个类没有全部实现接口中的方法,这个类还相当于一个接口功能,变成了子接口。不能用于创建一个实例化的对象。
作者:
无道
时间:
2014-3-16 16:02
编译的时会报错。如下代码: //给文件框添加一个键盘监听
textField.addKeyListener(new KeyListener(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_ENTER){
String str = textField.getText();
//列出 文件的函数
decideFileName(str);
}
}
});
addKeyListener的参数是接收一个KeyListener对象,此KeyListener就是一个接口,我现在使用匿名内部类来实现它并复写其中一个方法,其它方法没有复写。编译时会出现如下提示:
F:\javaDocument>javac -d ./ GraphListFile.java
GraphListFile.java:134: 错误: <匿名awt.GraphInt$6>不是抽象的, 并且未覆盖KeyListe
ner中的抽象方法keyReleased(KeyEvent)
textField.addKeyListener(new KeyListener(){
^
1 个错误
作者:
水蓝
时间:
2014-3-16 17:08
楼主可以比照一下抽象类,可接口的概念:
当我们声明以下接口:
interface ITestClass {
void func1();
void func2();
void func3();
}
复制代码
我们的确可以在类中不完全实现这个接口。
这种不完全实现接口的类,属于抽象类的一种。(应该用关键字abstract来修饰该类)
这种类可以通过编译,但不能通过new或者反射来创建对象。
如下:
abstract class TestClass implements ITestClass{
//抽象类中实现了接口方法1
public void func1() {
System.out.println("func1");
}
//但没有实现接口方法2和3
}
复制代码
只有出现该抽象类的子类,在完全实现了所有剩余的接口方法之后,才可以通过子类实例化。
完全实现子类,代码如下:
class ChildrenClass extends TestClass{
//父类TestClass中已经实现func1(),可以不覆盖
//实现方法2
public void func2() {
System.out.println("func1");
}
//实现方法3
public void func3() {
System.out.println("func1");
}
}
复制代码
验证方法:
public class TestMain {
TestClass tc = new ChildrenClass();
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2