/**
* 需求:
* 电脑运行实例
* 电脑运行基于主板
* */
public class DuoTaiDemo6 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MainBoard mb = new MainBoard();
mb.run();
mb.usePCI(null); //java.lang.NullPointerException 空指针异常
mb.usePCI(new NetCard());
mb.usePCI(new SongCard());
/*mb.run();
mb.useNetCard(new NetCard());*/
}
}
interface PCI{//主板上的统一接口
public void open();
public void close();
}
class MainBoard {//主板上链接PCI接口
public void run(){
System.out.println(“mainboard run”);
}
public void usePCI(PCI p){//PCI p = new NetCard(); 接口型引用指向自己的子类对象
if(p!=null){
p.open();
p.close();
}
}
}
class NetCard implements PCI{//复写PCI内的接口方法就行
public void open(){
System.out.println("netCard open");
}
public void close(){
System.out.println("netCard close");
}
}
class SongCard implements PCI{//大大提高扩展性 只要复写PCI接口中的方法即可
public void open(){
System.out.println("SongCard open");
}
public void close(){
System.out.println("SongCard close");
}
}
/*class MainBoard{
public void run(){
System.out.println(“MainBoard run”);
}
public void useNetCard(NetCard c){
c.open();
c.close();//把网卡嵌在主板上
}
}
class NetCard{
public void open(){
System.out.println("netCard open");
}
public void close(){
System.out.println("netCard close");
}
}*/