3:使用接口
Java可以创建一种称作接口(interface)的类,在这个类中,所有的成员函数都是抽象的,也就是说它们都只有说明没有定义,你可以如下所示来说明一个接口。
public interface interfaceName
//成员函数说明 接口中成员函数的缺省引用类型是private,接口(interface)的内部变量是不可更改的,并且总是static和final。
通过使用关键字implement,你可以在定义类时继承一个接口。不过与extends不同的是,一个类可以同时继承多个接口。
使用接口的优点在何处呢?通过创建一个接口,你可以说明一整套抽象的成员函数而无须去具体实现它,所有继承了这个接口的类,都将有着具有相同原形的成员函数。例如,你想所有的shapes都有一个draw()成员函数,你可以创建一个接口并且用Shape命名:public interface Shape
void draw(); 现在,无论你何时创建一个继承自Shape的类,都将拥有一个成员函数draw()。
Java可以创建一种称作接口(interface)的类,在这个类中,所有的成员函数都是抽象的,也就是说它们都只有说明没有定义,你可以如下所示来说明一个接口。
public interface interfaceName
//成员函数说明 接口中成员函数的缺省引用类型是private,接口(interface)的内部变量是不可更改的,并且总是static和final。
通过使用关键字implement,你可以在定义类时继承一个接口。不过与extends不同的是,一个类可以同时继承多个接口。
使用接口的优点在何处呢?通过创建一个接口,你可以说明一整套抽象的成员函数而无须去具体实现它,所有继承了这个接口的类,都将有着具有相同原形的成员函数。例如,你想所有的shapes都有一个draw()成员函数,你可以创建一个接口并且用Shape命名:public interface Shape
void draw(); 现在,无论你何时创建一个继承自Shape的类,都将拥有一个成员函数draw()。
解决方案 »
- 这个计算时间的函数应该怎么写?
- 我用JBuilder2006加载Servlet时,出错了java.lang.ClassNotFoundException: myservlet.UserallServlet,请问,各位大虾,这个时什么原因
- 求救:ucs2编码 转 gbk 有些字出现?号的,怎样解决?
- Exception in thread "main" java.lang.NoClassDefFoundError: a 在线等
- 請幫小妹看看下面是啥錯誤?
- JBulider 6下写的代码在JBuilder 8中编译不过?
- 如何通过JDB:ODBC访问局域网中的其他机器上的MYSQL数据库(在线等待)?
- 对Java一无所知的菜鸟想学Java。Help me!!!!!! Ths!!!!!!
- 我写的一个最基本的helloworld程序,但是,,,
- 送分问题!!!!!!!!!分必给!!!!!!!!!!!
- 在JB9 里能不能在一个面板里实例化一个显示时间的线程!
- 有关ResultSet中的refreshRow()问题
学习Java问的问题可能有点搞笑,请不要见怪。 :)
abstract class Door {
abstract void open();
abstract void close();
}
使用interface方式定义Door:
interface Door {
void open();
void close();
}
其他具体的Door类型可以extends使用abstract class方式定义的Door或者implements使用interface方式定义的Door。看起来好像使用abstract class和interface没有大的区别。如果现在要求Door还要具有报警的功能。我们该如何设计针对该例子的类结构呢
如果要求Door还具有报警的功能,我想应该使用abstract class的结构吧,是不是因为每个门的报警都可能相同,那就可以把他的缺省行为在abstract class中实现呢?
所以,最好当你要描述的东西“is a”这类事物时,才使用继承。接口应该说是“更加抽象的抽象类”,它有自己的特性。具体,可以去看看“think in java”、“core java”,“effective java”等一些书,有非常详尽的解释!