A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李九一 中级黑马   /  2013-6-29 10:04  /  1292 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
  接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

评分

参与人数 1黑马币 +3 收起 理由
神之梦 + 3

查看全部评分

3 个回复

倒序浏览
本帖最后由 王楚鑫 于 2013-6-29 11:59 编辑

下面是我总结的、一起探讨一下吧、、、、不足之处、多多指教啊

相似处:
1.interface的方法全部都没有“实现部分”(body区);
   而abstract类能拥有abstract方法,这些方法也都没有“实现部分”(body区);
2. interface和abstract类都不能直接用来建立对象实例,必须由一个标准的“一般类”去继承它(implements或extends),实现这些没有“实现部分”(body区)的方法,然后再以次“一般类”建立对象实例。

差异处:
1.interface没有构造函数;但abstract类有构造函数。
2.interface不允许其内任何方法拥有“实现部分”;但abstract类允许拥有一般非abstract的方法
,它们就一定有“实现部分“。
3.interface没有内置的super和this变量;abstract类则有。
4.interface的成员变量一定是常数(final的变量);但abstract类的成员变量,皆按照标准的一般类的成员变量。
5.interface所有成员的封装等级都是public,故定义成员时不可加public之外的其他封装修饰符;但abstract类的成员可以是任何封装等级,也就是它的成员可加任何封装修饰符。


还有代码
  1. /*
  2. 创建一个抽象类Draw,在抽象类中定义一个名称为drawRect()的抽象方法,再创建此
  3. 抽象类的子类Exampl,练习抽象类的使用。
  4. ps:在创建抽象类时,要使用abstract关键字来定义抽象类。
  5. 抽象类中定义抽象方法,同样需要使用abstract关键字来定义。
  6. 继承抽象类,必须重写抽象类中所有抽象方法。*/
  7. abstract class Draw {              //定义抽象类
  8.    public abstract void drawRect(double w,double h);

  9. }
  10. public class Exampl extends Draw{        //实现抽象类
  11.    public void drawRect(double w,double h){
  12.       System.out.println("矩形的宽和高分别是:"+w+"和"+h);
  13.    }
  14.    public static void main(String[] args){
  15.       Exampl ex=new Exampl();
  16.       ex.drawRect(100,50);                //调用方法输出矩形的宽和高
  17.    }
  18. }
复制代码
  1. /*
  2. 创建一个接口,在该接口中定义一个计算面积的getArea()方法,然后创建一个引用实现接口的类,在方法getArea()中实现面积的计算。
  3. 定义接口需要使用关键字interface
  4. 接口中的方法都是抽象方法。不包含方法体。
  5. 要实现接口需要使用implements关键字。
  6. 实现接口必须重写接口中的所有方法。*/
  7. interface Area {
  8.    public double getArea(double r);
  9. }
  10. public class Exampla implements Area {        // 创建引用接口的类
  11.    private double r = 0f;                    // 声明半径

  12.    private double getR() {
  13.       return r;
  14.    }

  15.    private void setR(double r) {
  16.       this.r = r;
  17.    }

  18.    public double getArea(double r) {      // 实现接口中的方法
  19.       double area = Math.PI * r * r;
  20.       return area;
  21.    }

  22.    public static void main(String[] args) {
  23.       Exampla ex = new Exampla();
  24.       ex.setR(10.0);                      // 为半径赋值
  25.       System.out.println("半径是" + ex.getR() + "的圆的面积是:"
  26.             + ex.getArea(ex.getR()));
  27.    }
  28. }
复制代码








我上午还做了个代码,在类中实现多接口的引用,,,分享一下
  1. /*
  2. 建立两个接口,每个接口中各定义一个方法,创建一个类,使该类引用这两个接口,练习多接口的引用。
  3. ps: 类实现接口,必须使用关键字implements
  4. Java中不可以同时继承两个类,但是可以同时实现多个接口,要实现的接口之间使用逗号分隔。
  5. */
  6. interface Move{                        //定义接口Move
  7.    public void startMove(String move);
  8. }
  9. interface Speak{                                                        //定义接口Speak
  10.       public void startSpeak(String speak);
  11. }
  12. public class Examplc implements Move,Speak{
  13.       public void startMove(String move){           //实现接口Move中的方法
  14.             System.out.println(move);
  15.       }
  16.       public void startSpeak(String speak){          //实现接口Speak中的方法
  17.             System.out.println(speak);
  18.       }
  19.       public static void main(String[] args){
  20.             Examplc ex=new Examplc();
  21.             ex.startMove("开始移动了......");
  22.             ex.startSpeak("开始说话了......");
  23.       }
  24. }
复制代码

评分

参与人数 1黑马币 +3 收起 理由
神之梦 + 3 给链接就行了

查看全部评分

回复 使用道具 举报
王楚鑫 发表于 2013-6-29 11:57
下面是我总结的、一起探讨一下吧、、、、不足之处、多多指教啊

相似处:

鉴于跟你昨天的帖子内容基本一样, 就不加分咯:lol
回复 使用道具 举报
楼主的内容属于总结分享,在选择主题时可选“感言”或者“资源分享”,因为昨天楼上已经发表过类似的总结帖,且相对较为详尽(有代码),所以加点金币鼓励下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马