黑马程序员技术交流社区
标题:
毕老师多态主板示例疑问——已解决
[打印本页]
作者:
王璐
时间:
2012-6-12 20:14
标题:
毕老师多态主板示例疑问——已解决
本帖最后由 王璐 于 2012-6-15 08:24 编辑
class MainBoard
{
public void run()
{
System.out.println("mainboard run");
}
public void usePCI(PCI p) //PCI p=new NetCard() //接口类型引用指向自己子类的对象
{
if(p!=null)
{
p.open();
p.close();
}
}
}
复制代码
其中PCI p 怎么理解?接口类不可以建立对象,那个p到底代表什么?
作者:
黑马张扬
时间:
2012-6-12 20:21
本帖最后由 黑马张扬 于 2012-6-12 20:22 编辑
p只是一个父类的引用 它指向哪个子类就代表的哪个子类的对象
PCI p=new NetCard() 比如这一句p代表的就是一个NetCard对象
接口是不能建立对象 但实现它的子类是可以建立对象的
这就典型的父类引用指向子类对象 是多态的一种表现形式!
作者:
赵兵锋
时间:
2012-6-12 20:23
这里用到了多态,父类引用指向子类对象。
interface PCI{
void open();//留给实现此接口的非抽象类类实现这两个方法
void close();
}
class NetCard implements PCI{//实现接口,实现接口里的方法
@Override
public void open() {
System.out.println("NetCard is open!");
}
@Override
public void close() {
System.out.println("NetCard is close!");
}
}
public class Main{
public static void main(String[] args){
PCI p=new NetCard();//创建一个NetCard类的对象,但是用其实现的接口PCI类型的引用指向它。
usePCI(p);
}
public static void usePCI(PCI p) //尽管这里标明接受参数的类型为PCI,但实际可以接受PCI的子类对象。
{
if(p!=null)
{
p.open();
p.close();
}
}
}
复制代码
作者:
潘东升
时间:
2012-6-12 20:28
PCI p,表示声明了一个引用,p就被声明为PCI接口的引用,意思就是p可以指向实现了接口的子类对象。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2