interface: 当确定多个类的操作方式都很相像时, a b s t r a c t成员函数是很有用的。但如果需要使用这个a b s t r a c t成员函数,必须创建一个新类,这样有时很繁琐。接口提供了一种抽象成员函数的有利方法。一个接口包含了在另一个地方实现的成员函数的收集。成员函数在接口里定义为p u b l i c和a b s t r a c t。接口里的实例变量是p u b l i c、s t a t i c和f i n a l。接口和抽象的主要区别是,一个接口提供了封装成员函数协议的方法而不必强迫用户继承类。 例如: public interface AudiClip { //Start playing the clip. void play(); //Play the clip in a loop. void loop(); //Stop playing the clip void stop(); } 想使用Audio Clip接口的类使用i m p l e n e n t s关键词来提供成员函数的程序代码。 class MyClass implements AudioClip { void play(){ <实现代码> } void loop <实现代码> } void stop <实现代码> } }abstract: 抽象类 面向对象的一个最大优点就是能够定义怎样使用这个类而不必真正定义好成员函数。当程 序由不同的用户实现时,这是很有用的,这不需用户使用相同的成员函数名。 在j a v a里,G r a p h i c s类中一个a b s t r a c t类的例子如下: public abstract class Graphics { public abstract void drawLine(int x1,int y1,int x2, int y2); public abstract void drawOval(int x,int y,int width, int height); public abstract void drawRect(int x,int y,int width, int height); } 在G r a p h i c s类里声明了几个成员函数,但成员函数的实际代码是在另外一个地方实现的。 public class MyClass extends Graphics { public void drawLine (int x1,int y1,int x2, int y2) { <画线程序代码> } } 当一个类包含一个a b s t r a c t成员函数时,这个类必须定义为a b s t r a c t类。然而并不是a b s t r a c t类 的所有成员函数都是a b s t r a c t的。A b s t r a c t类不能有私有成员函数(它们不能被实现),也不能有静态成员函数。 当这个abstract被继承并构造实际方法后,就不能像interface中后继的类一样随意定了方法了。
当确定多个类的操作方式都很相像时, a b s t r a c t成员函数是很有用的。但如果需要使用这个a b s t r a c t成员函数,必须创建一个新类,这样有时很繁琐。接口提供了一种抽象成员函数的有利方法。一个接口包含了在另一个地方实现的成员函数的收集。成员函数在接口里定义为p u b l i c和a b s t r a c t。接口里的实例变量是p u b l i c、s t a t i c和f i n a l。接口和抽象的主要区别是,一个接口提供了封装成员函数协议的方法而不必强迫用户继承类。
例如:
public interface AudiClip {
//Start playing the clip.
void play();
//Play the clip in a loop.
void loop();
//Stop playing the clip
void stop();
}
想使用Audio Clip接口的类使用i m p l e n e n t s关键词来提供成员函数的程序代码。
class MyClass implements AudioClip {
void play(){ <实现代码> }
void loop <实现代码> }
void stop <实现代码> }
}abstract:
抽象类
面向对象的一个最大优点就是能够定义怎样使用这个类而不必真正定义好成员函数。当程
序由不同的用户实现时,这是很有用的,这不需用户使用相同的成员函数名。
在j a v a里,G r a p h i c s类中一个a b s t r a c t类的例子如下:
public abstract class Graphics {
public abstract void drawLine(int x1,int y1,int x2, int y2);
public abstract void drawOval(int x,int y,int width, int height);
public abstract void drawRect(int x,int y,int width, int height);
}
在G r a p h i c s类里声明了几个成员函数,但成员函数的实际代码是在另外一个地方实现的。
public class MyClass extends Graphics { public void drawLine (int x1,int y1,int x2,
int y2) { <画线程序代码> } }
当一个类包含一个a b s t r a c t成员函数时,这个类必须定义为a b s t r a c t类。然而并不是a b s t r a c t类
的所有成员函数都是a b s t r a c t的。A b s t r a c t类不能有私有成员函数(它们不能被实现),也不能有静态成员函数。
当这个abstract被继承并构造实际方法后,就不能像interface中后继的类一样随意定了方法了。