(JAVA)一个接口可继承多个接口和抽象类继承接口的问题?
package jiu;
interface A
{ // 定义一个接口
String INFO = "Hello World ." ;//全局常量
void print() ; // 抽象方法
}
interface B
{ // 定义一个接口
public abstract void get() ;//抽象方法
}
abstract class C implements A,B
{ // 抽象类实现了A和B接口
public abstract void fun() ; // 抽象方法一共有三个
}
interface D extends A,B
{ // 同时继承两个接口
public void printD() ;
}
class X extends C implements D
{ // 先继承后实现
public void print()
{
System.out.println(INFO) ;
}
public void get()
{
System.out.println("你好!") ;
}
public void fun()
{
System.out.println("抽象类C实现接口A,B") ;
}
public void printD()
{
System.out.println("接口D继承两个接口A,B") ;
}
}
public class AbstractInterfaces
{
public static void main(String args[])
{
X x = new X() ; // 实例化子类对象
A a = x ; // 为父接口实例化
B b = x ; // 为父接口实例化
C c = x ; // 为抽象类实例化
D d=x; //父接口实现化
a.print() ;
b.get() ;
c.fun();
d.printD();
}
}
1.接口A中的全局常量为什么没有用static修饰?
2.抽象类C既然实现了接口A和B,为什么没有实现接口A和B中的抽象方法(抽象类中可以有一般方法)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
抽象类C既然实现了接口A和B,为什么没有实现接口A和B中的抽象方法(抽象类中可以有一般方法)?
回复
"class C implements A,B" 表明:类 C 要实现接口A和B。在 类 C的定义中,如果将 接口A和B 所示的所有抽象方法 都 "具体化" 为 有定义代码块的方法,则 类 C 就是一个可以被实例化的,即可以创建对象的类。否则,类 C 是抽象的。这里,类C没有定义好接口A和B 中的 全部抽象方法, 因此类C是抽象的。
回复
@tcxu : 抽象类中可以没有抽象方法,但它依然不能直接实例化
回复
正因为抽象类 C 没有实现接口A和B中的抽象方法, 抽象类 C 仍然(必须)视为抽象类,必须冠以 abstract, 它不可实例化。 实现接口A和B中的抽象方法的任务,将交给 抽象类 C 的子类 class X 来完成。正是因为 class X 完成了定义所有的抽象方法的任务,所以它可以被实例化。
1.接口里面的定义的常量默认就是static的,static写不写都没影响的
我说的static修饰,意思是说全局常量:public static final String INFO = "Hello World ." ;为什么不这样修饰?
回复
如 漂浪天下 所说,"接口里面的定义的常量默认就是static的,static写不写都没影响的"。