抽象类可以实现接口,那为什么抽象类中可以实现接口中的方法呢?抽象类不是不可以实现抽象方法的吗?
interfaceWindow{//定义Window接口,表示窗口操作publicvoidopen();//打开publicvoidclose();//关闭publicv...
interface Window{ // 定义Window接口,表示窗口操作
public void open() ; // 打开
public void close() ; // 关闭
public void activated() ; // 窗口活动
public void iconified() ; // 窗口最小化
public void deiconified();// 窗口恢复大小
}
abstract class WindowAdapter implements Window{
public void open(){} ; // 打开
public void close(){} ; // 关闭
public void activated(){} ; // 窗口活动
public void iconified(){} ; // 窗口最小化
public void deiconified(){};// 窗口恢复大小
};
class WindowImpl extends WindowAdapter{
public void open(){
System.out.println("窗口打开。") ;
}
public void close(){
System.out.println("窗口关闭。") ;
}
};
public class yb{
public static void main(String args[]){
Window win = new WindowImpl() ;
win.open() ;
win.close() ;
}
}; 展开
public void open() ; // 打开
public void close() ; // 关闭
public void activated() ; // 窗口活动
public void iconified() ; // 窗口最小化
public void deiconified();// 窗口恢复大小
}
abstract class WindowAdapter implements Window{
public void open(){} ; // 打开
public void close(){} ; // 关闭
public void activated(){} ; // 窗口活动
public void iconified(){} ; // 窗口最小化
public void deiconified(){};// 窗口恢复大小
};
class WindowImpl extends WindowAdapter{
public void open(){
System.out.println("窗口打开。") ;
}
public void close(){
System.out.println("窗口关闭。") ;
}
};
public class yb{
public static void main(String args[]){
Window win = new WindowImpl() ;
win.open() ;
win.close() ;
}
}; 展开
4个回答
展开全部
抽象类WindowAdapter中并没有实现方法,只是继承而已,真正的实现是在WindowAdapter的实例WindowImpl 中进行的。就好比把接口拉到抽象类中,一般直接装进去就行,但是接口大小不合适,装不进去,抽象类对接口进行了一些拉伸挤压调整下,把接口弄进去了;这时接口还是没有实现,因为没有被具体类插进去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
含有抽象方法的必须是抽象类,但是抽象类里面不一定全部是抽象方法,也就是说抽象类里面可以有普通方法,所以抽象类实现接口后就可以也必须实现接口里面的方法
你上面这个例子用到了适配器设计模式,有空的话你也可以看看设计模式的相关内容
你上面这个例子用到了适配器设计模式,有空的话你也可以看看设计模式的相关内容
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个抽象类也能从一个接口来实现,这种情况,我们必须为所有的方法提供方法体,这些方法是来自接口
interface IInterface
{
void Method1();
}
abstract class MyAbs : IInterface
{
public void Method1()
{
Console.WriteLine("Method implemented from the IInterface");
}
}
class MyClass : MyAbs//must implement base class abstract method
{
}
class MyClient
{
public static void Main()
{
MyClass mc = new MyClass();
mc.Method1();
}
}
interface IInterface
{
void Method1();
}
abstract class MyAbs : IInterface
{
public void Method1()
{
Console.WriteLine("Method implemented from the IInterface");
}
}
class MyClass : MyAbs//must implement base class abstract method
{
}
class MyClient
{
public static void Main()
{
MyClass mc = new MyClass();
mc.Method1();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询