如图,在这种情况下,接口有什么意义啊,即使使用了interface还是要在子类里重新声明方法啊,如果我要让cat类有pet特性我直接在cat里扩展新的特性的话工作量不是一样吗?和原!来比好像并没有方便啊。请问我这里理解是有哪里有问题吗,还有就是interface到底是有什么实际意义,还有就是关于继承、多态、接口该如何连贯的理解!恳求耐心的大神解答一下,菜鸟自学不容易啊!!!!图片说明
接口和实现类,你可以理解为继承。
接口声明的方法,实现类必须重写,当子类重写方法后,就执行重写后的方法。
而为什么需要接口里的空方法,其实是很有必要的:
1.以后你去调用别人的服务,别人只给你提供一个接口,让你调用,具体的实现类是不会让你看到的。
2.方法定义在接口里,便于维护,一目了然,可以直接快捷键找到实现类的方法
至于多态
继承,就是子类继承父类已经写好的方法,直接使用即可。子类也可以重写父类方法,或者添加新方法
多态,父类引用指向子类实例,运行方法的时候,现在子类中查找,找不到再去父类找(这也符合方法重写)
因此,以后调用接口实现类时,一般采用多态,就是:
接口=new实现类
为了理解这个问题,首先你要理解,代码是有编写顺序的。比如说java类库的sort是先编写好的。你的程序是后开发的。为了让sort能根据不同排序规则对各种数据排序,比较规则(compareto)方法必须你来实现。
问题来了,java类库的编写者怎么调用你编写的函数呢?因为它编写的时候你的程序还没写出来。
这个时候我们就用了接口,sort要求你传一个compareable接口,你写一个类实现这个接口,并且传一个这个类的对象。sort不关心你具体的类是什么类型,只要接口对上了,就能调用里面的compareto方法。
类似的,在基类中定义函数,在派生类中重载实现多态,其目的是,在不改动基类代码的前提下,对基类的行为自定义。这对于团队开发和代码复用很有用处。类库、核心代码写好以后就不需要再动了。
使用接口主要是为了让Java实现多继承,而继承通俗讲就是我们平时说的子类和父类,比如cat和animal,cat是animal的子类,animal有颜色属性,同时有个叫的方法,cat继承了animal所以cat同样也有颜色属性和叫方法。此外cat还可以写属于自己的属性和方法,这就是继承。多态又分继承多态和实现接口的多态,cat可以继承animal的叫方法并重写成猫叫,同样的dog也可以继承animal的叫方法重写成狗叫。接口实际上也是类,可以认为是完完全全的抽象类
在平时做项目的过程中,有时候你的类中一些方法或许涉及到你的一些隐私或不想被别人看到的东西,这个时候你可以不给别人你自己的这个类,而只需要让别人继承你自己的接口,别人如果想使用你类里的属性或者方法,通过重写等等就可以,这样既可以保护隐私,又可以让别人实现了某些方法,何乐而不为呢,个人的小理解,我也是个菜,不对的地方请指教
接口和多态楼上都说的很详细了,接口可以多实现,而继承只能单继承。接口看起来简洁明了代码可维护性也高。其实这种时候你只要多敲代码多看demo,自然慢慢的就会理解了,不用着急,学习本来就是一个循序渐进的过程。
谢谢大家的帮助,希望大家都越学越好!!!