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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© student 中级黑马   /  2013-5-27 20:46  /  876 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 student 于 2013-5-27 20:53 编辑

抽象类和接口之间,存在许多相识之初,所以这里将两者放到一起分析。

一、抽象类
1. 抽象类就是由关键字abstract定义的类。
2. 不可用创建抽象类的对象,只能创建其非抽象的子类对象。
3. 抽象类中可以定义抽象方法,也可以定义非抽象方法,抽象方法一定定义在抽象类中。
4. 继承抽象类的类,是该抽象类的子类,子类必须覆盖抽象类的所有抽象方法。如果子类只覆盖部分抽象方法,那么该子类还是抽象类。

例子:
  1. //抽象类
  2. abstract class Animal {
  3.         //抽象方法:只定义方法,没有方法体
  4.         abstract public void method1();
  5.         
  6.         //非抽象方法
  7.         public void method2() {
  8.                 System.out.println("抽象方法");
  9.         }
  10. }

  11. //子类:继承抽象类Animal
  12. class Dog extends Animal {
  13.         //子类必须覆盖抽象方法
  14.         public void method1() {
  15.                 System.out.println("子类覆盖父类抽象方法");
  16.         }
  17. }
复制代码
二、接口
1. 接口是由关键字interface定义的类,接口可以理解为一个特殊的抽象类。
2. 接口中的成员(成员方法和成员变量)都必须是public的,接口的方法可以是抽象的,也可以是非抽象的。
3. 接口不能创建对象,因为只有抽象方法。
4. 接口需要给子类实现,子类通过关键字implements来实现接口。
5. 子类必须覆盖接口中的所有抽象方法和非抽象方法

例子:
  1. //接口
  2. interface Machine {
  3.         //抽象方法,只有方法声明,没有方法体
  4.         abstract public void method1();
  5.         //非抽象方法,只有方法说明,没有方法体
  6.         public void method2();
  7. }

  8. //实现接口
  9. class Car implements Machine {

  10.         //实现接口的抽象方法
  11.         public void method1() {
  12.                 System.out.println("method1");
  13.         }

  14.         //实现接口的非抽象方法
  15.         public void method2() {
  16.                 System.out.println("method2");
  17.         }
  18.         
  19. }
复制代码
当抽象类中的方法都是抽象方法时,该抽象类可以定义为接口。


评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

2 个回复

倒序浏览
顶一个dcvc
回复 使用道具 举报
“接口的方法可以是抽象的,也可以是非抽象的。”文中这句话可不对哦,但是最后一句又是对的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马