abstract class和interface相关整理
浏览:29日期:2023-02-12
内容: 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和interfaceabstract 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, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
相关文章: