黑马程序员技术交流社区
标题:
抽象和接口的问题。。
[打印本页]
作者:
清秋
时间:
2011-11-17 13:33
标题:
抽象和接口的问题。。
本帖最后由 清秋 于 2011-11-21 09:49 编辑
day08视频中的多态主板的例子。
/*
需求:
电脑运行实例
电脑运行依赖于主板
*/
interface PCI
{
public void open();
public void close();
}
class MainBoard
{
public void run()
{
System.out.println("maiboard run");
}
public void usePCI(PCI p)
{
if ( p != null )
{
p.open();
p.close();
}
}
}
class NetCard implements PCI
{
public void open()
{
System.out.println("netcard open");
}
public void close()
{
System.out.println("netcard close");
}
}
class SoundCard implements PCI
{
public void open()
{
System.out.println("soundcard open");
}
public void close()
{
System.out.println("soundcard close");
}
}
class DuoTai5
{
public static void main(String[] args)
{
MainBoard mb = new MainBoard();
mb.run();
mb.usePCI(null);
mb.usePCI(new NetCard());
mb.usePCI(new SoundCard());
}
}
复制代码
例子中用接口实现。
对接口和抽象有些模糊
不知道这两种方式有何区别。
抽象
abstract class PCI
{
public abstract void open();
public abstract void close();
}
class MainBoard
{
public void run()
{
System.out.println("maiboard run");
}
public void usePCI(PCI p)
{
if ( p != null )
{
p.open();
p.close();
}
}
}
class NetCard extends PCI
{
public void open()
{
System.out.println("netcard open");
}
public void close()
{
System.out.println("netcard close");
}
}
class SoundCard extends PCI
{
public void open()
{
System.out.println("soundcard open");
}
public void close()
{
System.out.println("soundcard close");
}
}
class DuoTai5
{
public static void main(String[] args)
{
MainBoard mb = new MainBoard();
mb.run();
mb.usePCI(null);
mb.usePCI(new NetCard());
mb.usePCI(new SoundCard());
}
}
复制代码
作者:
後天__牛永志
时间:
2011-11-17 13:47
其实现在这个阶段没必要硬揪这两个的区别,等你学的深了,自然而然多久知道了,什么时候要定义接口,什么时候定义抽象方法
现在你就可以这么认为:接口是一种特殊的抽象类,因为接口中的方法都是抽象方法,而抽象类中可以定义实体方法。
学东西要灵活!!!
作者:
xiwangliujiao
时间:
2011-11-17 18:28
在你所定义的抽象类中所有的方法都是抽象的,跟接口几乎要一样了,而类要继承你编写的抽象类,只能继承一个,而接口可以实现多个,你所写的我感觉有点巧合,这样看问题确实看不出来有啥区别了,多练习,希望你早日明白
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2