5.同时可实现多个接口
在java中,类与类之间是可单继承的,一个类只允许有一个父类,即java中是不支持多继承的,但是一个类中可以同时实现多个接口。
我们以一个动物类中的cat为例:
class Animal{
protected String name;
public Animal(String name){
this.name=name;
}
}
interface IFlying{
void fly();
}
interface IRunning{
void run();
}interface ISwimming{
void swim();
}
class Cat extends Animal implements IRunning{
public Cat(String name) {
super(name);
}
public void run(){
System.out.println(this.name+"正在走猫步");
}
}
public class Test {
public static void main(String[] args) {
Cat cat = new Cat("小猫");
cat.run();
}
类:Animal类
接口:IFlying,IRunning,ISwimming接口
运行结果:
同时我们在main方法中可以实现小猫正在走猫步,也可以同时实现两个接口,比如我们还建立一个青蛙对象,青蛙既能跑又能游泳,则实现代码如下:
class Animal{
protected String name;
public Animal(String name){
this.name=name;
}
}
interface IFlying{
void fly();
}
interface IRunning{
void run();
}interface ISwimming{
void swim();
}
class Frog extends Animal implements IRunning,ISwimming{
public Frog(String name){
super(name);
}
@Override
public void run() {
System.out.println(this.name+"正在走蛙步");
}
@Override
public void swim() {
System.out.println(this.name+"正在游蛙泳");
}
}
public class Test {
public static void main(String[] args) {
Frog frog=new Frog("青蛙");
frog.run();
frog.swim();
}
}
无论是要实现两个接口还是多个接口,都是按这种方法来做。只是要注意:一个类实现多个接口时,每个接口中的抽象方法都要实现,否则类必须设置为抽象类。
同时,由上面的例子我们也可以摸索得到接口到底在程序设计中扮演着一个什么样的角色,类仿佛是共性的抽取,接口是对特殊行为的抽象,一个动物可能具有多个特殊行为,但因为java中类只能单继承,所以接口这个工具就应运而生了。
同时在java面向对象编程中,一个类继承一个父类,实现多个接口这种用法非常常见。
继承表达的含义就是is-a语义,而接口表达的含义就是具有xxx特性
6.接口间的继承
类与类之间虽然是单继承的,但接口与接口之间可以实现多继承
接口可以继承一个接口,达到复用的效果
关键字:extends
interface IRunning{
void run();
}
interface ISwimming{
void swim();
}
interface IAmphibious extends IRunning,ISwimming{
}
class Frog implements IAmphibious{
}
IAmphibious 两栖动物
通过接口继承创建一个新的接口IAmphibious表示两栖的,IAmphibious这个接口具备IRunning、ISwimming功能,同时也要记得重写IRunning,ISwimming方法
接口间的继承相当于把多个接口合并在一起
7.对某些Comparable接口Clonable接口暂缓,对这两者理解不够,需写者再多理解再单独写一篇博客
8.抽象类与接口的区别
抽象类和接口都是java多态的常见使用方式
其核心区别:抽象类可以包含普通方法和普通字段,这样的普通方法和字段可以被子类直接使用,而接口不能包含普通方法,且子类必须重写所有的抽象方法
其他的不同比较见下图便可知