首页  >  问答  >  正文

java - 抽象类和接口?

PHP中文网PHP中文网2721 天前444

全部回复(9)我来回复

  • 黄舟

    黄舟2017-04-18 10:13:05

    比如说生物和人 此时生物可以当做接口,人当做实现生物的抽象类,男人女人作为具体实现类,为什么可以这样设计?因为生物是个非常非常抽象的概念,你很难抽象出它的具体行为(也就是具体的方法实现),此时可以当做接口,人为何可以作为抽象类,因为他可以有具体的行为动作实现,比如,摸爬滚走,但是可能男人女人的性征不一样,同时可能还有一些公有的行为 但是行为特征不一样 这可以当做抽象类的抽象方法,让子类实现。大概是这样。

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:13:05

    比如你有好多个类似的对象(想了半天,用别的词不太合适),人也好,东西也好。他们的属性几乎都一样,你就可以把它们抽象成一个类。比如车类,有轮子、发动机、底盘、外壳等属性。new一个对象,来保存当前的属性,可能你要把这些属性保存到数据库,也可能要显示给用户,当前的对象就是起了个保存数据的作用。对象不仅仅能保存数据,还可以有自己的方法,比如发动车。点击某个按钮,调用当前对象的发动的方法。一般类的方法都会和数据的变化有关,我说的是一般,并不是所有。比如数据库连接类,就不会改变数据,只是起到一个连接数据库的作用。
    接口一般来说是给外部调用的。你写了一系列的方法,最终能完成一个有用的动作。这一系列的方法最开始的地方就是接口,你可以这么理解。比如一个简单登陆界面,你输入用户名密码之后,点击确定就开始调用后台登录接口,把用户名密码传给服务器,服务器端接收需要一个方法,接收之后要对密码进行验证,又是一个方法。验证之后给客户端返回消息。登录成功或者失败,这一系列动作完成。当然这些你可以压到一个方法里完成,总之开始的地方就是接口。
    以上说法比较直白,并不完全准确。

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 10:13:05

    接口表示一个能力/行为。例如:人会跑,狗也会跑,就可以定义接口IRunable。 使用接口很好实现组件间解耦。
    抽象类就是为了实现多态,使代码更方便扩展。

    回复
    0
  • 怪我咯

    怪我咯2017-04-18 10:13:05

    接口就好像是100% 纯天然的抽象类。

    回复
    0
  • 迷茫

    迷茫2017-04-18 10:13:05

    接口的话更偏向于为一群类定一个协议, 而抽象类的话已经向实现迈进了一步。

    例如模板方法模式中就用到了抽象类,实现了一些通用的方法, 而将不同的方法延迟到子类再实现。

    回复
    0
  • 阿神

    阿神2017-04-18 10:13:05

    举个简单的例子,你现在想要抽象所有国家的人,那么你会想到抽象成一个接口,然后有个方法叫sayHellosayHello

    public interface Human{
        
        String sayHello();
    }

    OK,现在每个实现了这个接口的对象只要实现sayHello方法,就表示了各个国家的人,他们拥有了不同的打招呼的的方式。

    但是现在业务复杂起来了,你需要这些人还具备一些通用的能力,比如cry,walk,那么这个时候,你是不是应该考虑把Human

    public abstract class Human{
        
        public abstract String sayHello();
        
        public String cry(){
            System.out.println("wu~wu~wu~wu~wu~");
        }
        
        public String walk(){
            System.out.println("左右左 左右左");
        }
    }

    OK,现在每个实现了这个接口的对象只要实现sayHello方法,就表示了各个国家的人,他们拥有了不同的打招呼的的方式。

    但是现在业务复杂起来了,你需要这些人还具备一些通用的能力,比如cry,walk,那么这个时候,你是不是应该考虑把Human抽象成为一个抽象类,像这样:🎜 rrreee 🎜总结一下,就是如果只有抽象的方法,那么就用接口,如果还有通用的具体方法实现,则用抽象类🎜

    回复
    0
  • 怪我咯

    怪我咯2017-04-18 10:13:05

    参考:
    Java™ 教程 :: Learngin The Java Language :: 接口和继承 :: 继承 :: 抽象方法和类 :: 抽象类与接口相比

    回复
    0
  • 黄舟

    黄舟2017-04-18 10:13:05

    抽象类用于抽象事物,接口抽象行为

    回复
    0
  • ringa_lee

    ringa_lee2017-04-18 10:13:05

    该类定义统一操作,为对象提供方法

    回复
    0
  • 取消回复