孙鑫老师的视频教程
定义的显卡接口
interface VideoCard
{
void Display();
String getName();
}
Dmeng显卡
class Dmeng implements VideoCard
{
String name;
Dmeng()
{
name="Dmeng`s videocard";
}
public void setName(String name)
{
this.name=name;
}
public void Display()
{
System.out.println("Dmeng`s videocard is working");
}
public String getName()
{
return name;
}
}
主板
class Mainboard 
{
String strCPU;
VideoCard vc;
void setCPU(String strCPU)
{
this.strCPU=strCPU;
}
void setVideoCard(VideoCard vc)//这报错了,但是视频里面可以通过编译并且执行的,为什么呢?
{
this.vc=vc;
}
void run()
{
System.out.println(strCPU);
System.out.println(vc.getName());
vc.Display();
System.out.println("Mainboard is running");
}
}
computer类
class Computer 
{
public static void main(String[] args) 
{
Dmeng d=new Dmeng();
Mainboard m=new Mainboard();
m.setCPU("Intel CPU");
m.setVideoCard(d);
m.run();
}
}

解决方案 »

  1.   

    我见过类似的。注册监听器接口。应该可以的吧。
    是没有import么?
      

  2.   


    interface VideoCard 

    void Display(); 
    String getName(); 

    Dmeng显卡 
    class Dmeng implements VideoCard 

    String name; 
    Dmeng() 

    name="Dmeng`s videocard"; 

    public void setName(String name) 

    this.name=name; 

    public void Display() 

    System.out.println("Dmeng`s videocard is working"); 

    public String getName() 

    return name; 


    主板 
    class Mainboard 

    String strCPU; 
    VideoCard vc; 
    void setCPU(String strCPU) 

    this.strCPU=strCPU; 

    void setVideoCard(VideoCard vc)//这报错了,但是视频里面可以通过编译并且执行的,为什么呢? 

    this.vc=vc; 

    void run() 

    System.out.println(strCPU); 
    System.out.println(vc.getName()); 
    vc.Display(); 
    System.out.println("Mainboard is running"); 


    computer类 
    class Computer 

    public static void main(String[] args) 

    Dmeng d=new Dmeng(); 
    Mainboard m=new Mainboard(); 
    m.setCPU("Intel CPU"); 
    m.setVideoCard(d); 
    m.run(); 

    }可以的,只要实现了该接口的类,它的对象就可以赋给此接口的变量。错误提示是什么,贴出来看看
      

  3.   

    经测试,楼主代码可以运行interface VideoCard 

    void Display(); 
    String getName(); 

    class Dmeng implements VideoCard 

    String name; 
    Dmeng() 

    name="Dmeng`s videocard"; 

    public void setName(String name) 

    this.name=name; 

    public void Display() 

    System.out.println("Dmeng`s videocard is working"); 

    public String getName() 

    return name; 


    class Mainboard 

    String strCPU; 
    VideoCard vc; 
    void setCPU(String strCPU) 

    this.strCPU=strCPU; 

    void setVideoCard(VideoCard vc)//这报错了,但是视频里面可以通过编译并且执行的,为什么呢? 

    this.vc=vc; 

    void run() 

    System.out.println(strCPU); 
    System.out.println(vc.getName()); 
    vc.Display(); 
    System.out.println("Mainboard is running"); 


    class Computer 

    public static void main(String[] args) 

    Dmeng d=new Dmeng(); 
    Mainboard m=new Mainboard(); 
    m.setCPU("Intel CPU"); 
    m.setVideoCard(d); 
    m.run(); 

    }result:Intel CPU
    Dmeng`s videocard
    Dmeng`s videocard is working
    Mainboard is running