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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王楚鑫 中级黑马   /  2013-6-28 20:38  /  1220 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

调代码呢、忽然就想起来那首诗了
锄禾日当午,不如coding苦,对着C++,一调一上午。
我就想啊、这要换成j敲ava代码的、改成什么更顺口呢?哈哈、分享一下今天的学习进度、、

相似处:
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技术分 +1 收起 理由
神之梦 + 1 很给力!

查看全部评分

2 个回复

正序浏览
支持了。。。
回复 使用道具 举报
鼓励一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马