选择显示字体大小

abstract class和interface相关整理

abstract class和interface在java语言中都是用来进行抽象类定义的

interface ,给外界的接口,按照规定办事;
abstract  ,内部继承关系;

interface 就是一组操作的集合,它定义了一个行为集但不作任何具体的实现,这样的话,具体的操作 都可以放在实现类中去,
          体现设计与实现分离的设计思想。

在面向对象的概念中,所有的对象都是通过类来描绘,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类
抽象概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。

=====================================================================================================================
使用abstract class的方式定义demo抽象类的方式如下:

abstract class demo {
abstract void method1();
abstract void method2();
…
}


使用interface的方式定义demo抽象类的方式如下:

interface demo {
void method1();
void method2();
…
}


====================================================================================================================
从编程层面看abstract class和interface

abstract class在java语言中表示的是一种继承关系,一个类只能使用一次继承关系
一个类却可以实现多个interface

在abstract class的定义中,我们可以赋予方法的默认行为
在interface的定义中,方法却不能拥有默认行为

======================================================================================================================
例如要设计一个形状类mshape,从此类可以派生 方形、圆形、三角形等子类。我们就可以将mshape这个父类设计为abstract类。

比如,子类都有 color 属性,因此可以把 color 这个数据成员,以及给 color 赋值的method均设计在父类中,
这样就不用在每个子类中设计相同的代码来处理 color 这个属性。
而如果想计算几何形状的面积,由于各个几何形状的面积计算方式都不相同,所以把计算面积的method的处理放在父类中就不合适,
但由于每个几何形状都需要用到这个method,因此可以在父类中只声明计算面积的method "area()",而把具体的处理放在子类中定义。
即把area()设计为抽象类。

以下是程序代码:
//abstract类 mshape      
abstract class mshape
{
        protected string color;   //数据成员
        public void setcolor(string mcolor)   //一般方法,定义了具体的处理
        {
           color=mcolor;
        }
        abstract void area();   //抽象方法,没有定义具体的处理
}


//方形类
class rectshape extends mshape
{      
        int width,height,rectarea;    
        public rectshape(int w,int h)
        {  
                 width=w;
                 height=h;        
        }
        public void area()  //计算面积
        {          
          rectarea=width*height;
        }
}


//使用
public class myapp
{
        public static void main(string args[])
        {
          rectshape rect=new rectshape(3,6);
          rect.setcolor("red");
          rect.area();
          system.out.print("color="+rect.color+", area="+rect.rectarea);
        }
}


由此可见,在abstract中不仅可以定义一般的方法(即可以进行具体处理的方法),还可以象interface一样定义抽象方法。
而在interface中只能定义抽象方法。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons