interface PCI //这是定义的接口
{
public void open();
public void close();
}
class MainBoard
{
public void run()
{
System.out.println("mainboard run ");
}
public void usePCI(PCI p) //PCI p = new NetCard() // 接口型引用指向自己的子类对象。
{
if(p!=null) //上面这句话,怎么理解,不是定义了接口么,为什么还要定义usePCI的方法?
{ //传递一个PCI p ,这不是定义一个接口对象的意思么?
p.open();
p.close();
}
}
}
class SoundCard implements PCI {...}
class NetCard implements PCI {...}
class DuoTaiDemo //主函数
{
public static void main(String[] args)
{
MainBoard mb = new MainBoard(); //创建了主板mb
mb.run();
mb.usePCI(null);
mb.usePCI(new NetCard()); //这里怎么理解?怎么理解传递?
mb.usePCI(new SoundCard());
interface PCI //这是定义的接口 //接口定义的功能是运行和结束,因为这是声卡和显卡所共有的特性。
{
public void open();
public void close();
}
class MainBoard
{
public void run()
{
System.out.println("mainboard run ");
}
public void usePCI(PCI p) //PCI p = new NetCard() // 接口型引用指向自己的子类对象。
{
if(p!=null) //上面这句话,怎么理解,不是定义了接口么,为什么还要定义usePCI的方法?
{ //传递一个PCI p ,这不是定义一个接口对象的意思么?
p.open();
p.close(); //不是定义一个接口对象,而是往主板对象中传递一个接口对象,也就是声卡或者显卡对象。
//声卡和显卡实现接口是用下面单独的类实现的,尽可能功能单一,提高复用性。
} //定义了这个方法,可以灵活选择是否应用显卡或声卡的接口实现,因为主板上不一定有声卡或显卡。 }
}
class SoundCard implements PCI {...} //声卡和显卡需要实现接口,完成运行和结束的功能代码。
class NetCard implements PCI {...}
class DuoTaiDemo //主函数
{
public static void main(String[] args)
{
MainBoard mb = new MainBoard(); //创建了主板mb
mb.run();
mb.usePCI(null);
mb.usePCI(new NetCard()); //这里怎么理解?
mb.usePCI(new SoundCard()); //这里就是主板对象调用声卡和显卡对象,也就是插上声卡和显卡
}
} 作者: 范泰洋 时间: 2012-9-13 14:56
interface PCI //这是定义的接口
{
public void open();
public void close();
}
class MainBoard
{
public void run()
{
System.out.println("mainboard run ");
}
public void usePCI(PCI p) //PCI p = new NetCard() // 接口型引用指向自己的子类对象。
{
if(p!=null) //上面这句话,怎么理解,不是定义了接口么,为什么还要定义usePCI的方法? |||因为接口中的方法都是抽象方法不能创建对象。需要子类复写了父类中的抽象方法然后创建对象。这不PCI p = new NetCard() 这里是多态的表现,向上转型了。PCI代表的是接口类型,就相当于int a = 1 中int是整数类型一样,那么P就是就是接口类型的一个引用型变量,然后new NetCard()是创建子类对象。那么子类对象的地址值就赋值给了p,既然p指向了一个对象,那么就能调用复写后的方法了。为什么要定义usePci方法,那是因为这里方便调用而已,其实,你子类复写完父类的方法后,也可以在主函数中创建子类对象,然后调用的啊!
{ //传递一个PCI p ,这不是定义一个接口对象的意思么?||||是接收到子类对象。
p.open();
p.close();
}
}
}
class SoundCard implements PCI {...}
class NetCard implements PCI {...}
class DuoTaiDemo //主函数
{
public static void main(String[] args)
{
MainBoard mb = new MainBoard(); //创建了主板mb
mb.run();
mb.usePCI(null);
mb.usePCI(new NetCard()); //这里怎么理解?|||里面的那个new NetCard()是在创建一个子类对象,然后作为一个参数传递给usePCI方法。
mb.usePCI(new SoundCard());