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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袁培育 中级黑马   /  2012-4-29 19:26  /  2259 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

接口里的方法都是抽象的,实现接口的类必须实现接口里的所有抽象方法,这样并没有少写多少代码呀?那为什么要定义接口呢?难道只是为了存储一些常量?

8 个回复

倒序浏览
可以认为是一个特殊的抽象类,当抽象类中的方法都是抽象的,那么这时可以通过接口的形式来表示。

接口好处:可以被类多实现,为什么这样好呢?因为方法中没有方法主体,可以由子类任意定义(自己爱咋样咋样)
  
还有就是类可以再继承一个类的同时继承多个接口,这样有利于扩展程序的功能。

还有两个注意点:

接口中的成员都有固定的修饰符

1、常量  public static  final

2、方法:public  abstract(可写可不写,反正都是抽象的)

其它什么接口的定义什么的我就不再多说了。
回复 使用道具 举报
首先JAVA中是只允许单继承的。那么接口是可以多实现的。接口在一定程度上是弥补了单继承的缺陷。
还有接口和抽象类的有一定的相似的。在像面向接口编程(IOC)。在能不继承的情况下是尽量不去继承的。
因为一你继承了某个类,那么以后再想去继承,就不能去继承了。所以能不继承就不继承。这时候接口就有用了。
[code]package com.itcast.demo;

interface DAO{
        public void save();
}

class JdbcDAO implements DAO{
        @Override
        public void save() {
                System.out.println("使用jdbc操作数据库");
               
        }
        
}

class HibernateDAO implements DAO{
        @Override
        public void save() {
                System.out.println("使用Hibernate操作数据库");
               
        }
}
[code]
比如上面的代码,就可以通过接口实现了两种数据库的操作方式。就可以去适应在不同的情况下改变数据的操作方式。而不需要去修改太多的代码。这也是面向接口编程的一种。
希望对你有用!谢谢!
回复 使用道具 举报
先来说一下继承的缺点:1,代码在多个子类中重复 2,运行时的行为不容易改变 3,改变每一个行为,将会牵一发而动全身,造成其他不想改变行为的子类也要随着改变。代码的重用性较差,造成系统维护或升级的时候比较困难。可以不断的抽取,将每一个可能会改变、影响较大的行为都抽取出来,方便系统的维护和升级。然而java不支持多继承,但是可以实现多个接口,算是补足。
回复 使用道具 举报
杨志 发表于 2012-4-29 19:52
首先JAVA中是只允许单继承的。那么接口是可以多实现的。接口在一定程度上是弥补了单继承的缺陷。
还有接口 ...

感觉还是不是很懂,如果A类继承了B类那么A类就可以少写很多代码,因为可以用B类里已有的方法,但是如果A类实现了C接口,那A类还得写c接口里的方法,也就是说并没有省事。就如你的例子,如果没有那个接口,对程序并没有多大影响呀?感觉你的接口只是在提醒你该写哪些方法而已。
回复 使用道具 举报
接口是面向对象编程的关键!
如果楼主真正体会到面向对象编程的精神的话就不会有这样的疑问了,
在面向对象的世界里,接口就是对象的类型,跟int等其他类型的意义一样,
如果一个值是int类型的你就能对其进行加减乘除的操作,
而接口提供了一些列操作,他就好比int提供了加减乘除操作一样,定义了一个类型。
回复 使用道具 举报
接口:初期理解,可以认为是一个特殊的抽象类
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
class用于定义类
interface 用于定义接口。
接口定义时,格式特点:
1,接口中常见定义:常量,抽象方法。
2,接口中的成员都有固定修饰符。
        常量:public static final
        方法:public abstract
记住:接口中的成员都是public的。
接口:是不可以创建对象的,因为有抽象方法。
(重点):需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。否则子类是一个抽象类。
接口可以被类多实现,也是对多继承不支持的转换形式。java支持多实现。
回复 使用道具 举报
接口解决什么问题:
JAVA 只提供单一继承,也就是说一个子类只能继承一个父类,接口的出现弥补这个缺点,一个子类虽然只能继承单一父类但它可一实现多个接口。实现一个接口就要实现这个接口里的所有抽象方法。
其实你可以将接口理解为特殊的抽象类,因此在结合抽象类的特点去理解接口这样比较好
回复 使用道具 举报
杨志 高级黑马 2012-4-29 21:40:52
9#
袁培育 发表于 2012-4-29 21:15
感觉还是不是很懂,如果A类继承了B类那么A类就可以少写很多代码,因为可以用B类里已有的方法,但是如果A ...

这个就一个例子的!接口只是要将一些公用的,常用的功能进行抽象出来。比如是增删改查(CRUD)的操作。那个类要去实现那个类也是为了多态。
如上面的,我可以这样写一个函数:
  1. public void test(Dao dao){
  2.                
  3.         }
复制代码
那么这样,我不用去管别的什么东西。因为这里传入的是一个接口,那么即使到时候需求增加。
需要增加子类。那么在客户端的代码还是不用改的。这个思想你在JDK 的源代码中也是可以看到的。
都是逐级抽象的。
这里如果没有那个接口的话,那么你就得多要写你个函数去实现各种不向的操作方式。
就像:
  1. List list = new ArrayList();
复制代码
这里没有去用ArrayList去定义,而用List接口去定义。
就是为了多态的。
不知道能不能帮上你!谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马