一、类和类的关系
类和类之间是继承关系,只能单继承,不能多继承,但是可以多层继承。
二、类和接口的关系
类和接口之间是实现关系,可以单实现,也可以多实现;还可以在继承一个类的同时,实现多个接口。
细节:在实现类中,如果你实现了多个接口的话,那就需要将所有的抽象方法全部重写才可以。
问题:那如果多个接口中有重名的抽象方法,那该怎么办呢?
Inter1.java
package com.itheima.a03interfacedemo3;
public interface Inter1 {
public abstract void method1();
public abstract void method2();
public abstract void method3();
}
Inter2.java
此时 Inter1 和 Inter2 中是没有重名的方法的。
package com.itheima.a03interfacedemo3;
public interface Inter2 {
public abstract void method4();
public abstract void method5();
public abstract void method6();
}
InterImpl.java
InterImpl实现类
实现 Inter1,Inter2
这两个接口的时候,需要重写里面所有的抽象方法。
使用IDEA的快捷提示操作,默认全选所有的抽象方法。
它会提示你:在 Inter1
中有 1、2、3
这三个抽象方法,在 Inter2
中有 4、5、6
这三个抽象方法
然后点击OK即可。
package com.itheima.a03interfacedemo3;
public class InterImpl implements Inter1,Inter2{
@Override
public void method1() {
}
@Override
public void method2() {
}
@Override
public void method3() {
}
@Override
public void method4() {
}
@Override
public void method5() {
}
@Override
public void method6() {
}
}
那如果接口中,有重名的该怎么办?
修改 Inter2
接口,此时 1、2、3
抽象方法是与 Inter1
中的抽象方法重名的。
package com.itheima.a03interfacedemo3;
public interface Inter2 {
public abstract void method1();
public abstract void method2();
public abstract void method3();
public abstract void method4();
}
此时再次用鼠标点击红色波浪线,alt + 回车 选择第一个,
这个时候你就发现了,Inter1
里面的 1、2、3
我们需要重现,但是在 Inter2
中,我们只需要重写 method4()
就可以了。
package com.itheima.a03interfacedemo3;
public class InterImpl implements Inter1,Inter2{
@Override
public void method1() {
System.out.println("method1");
}
@Override
public void method2() {
System.out.println("method2");
}
@Override
public void method3() {
System.out.println("method3");
}
@Override
public void method4() {
System.out.println("method4");
}
}
因此,多个接口中有重名的方法,我们只需要重写一次就可以了。
这里以 method1()
为例,重写的这一次,重写的 method1()
即表示我重写了 Inter1接口
中的 method1()
方法,又表示我重写了 Inter2接口
中的method1()
方法。
三、接口和接口的关系
接口与接口直接是继承关系,而且可以单继承,也可以多继承。
PS:如果实现类,实现的是最下面的子接口的话,那么就需要重写这个 接口体系
所有的抽象方法。
代码实现
Inter1.java
package com.itheima.a04interfacedemo4;
public interface Inter1 {
public abstract void method1();
}
Inter2.java
package com.itheima.a04interfacedemo4;
public interface Inter2 {
public abstract void method2();
}
Inter3.java
PS:这里 Inter3接口
继承了 Inter1接口
和 Inter2接口
。
package com.itheima.a04interfacedemo4;
public interface Inter3 extends Inter1,Inter2{
public abstract void method3();
}
InterImpl.java
此时实现类实现的是 Inter3接口
。此时需要将整个接口体系
(即Inter1
、Inter2
、Inter3
)中所有的抽象方法全部重写,少写一个都会报错。
package com.itheima.a04interfacedemo4;
public class InterImpl implements Inter3{
@Override
public void method1() {
}
@Override
public void method2() {
}
@Override
public void method3() {
}
}
四、总结
1、类和类之间是继承关系,只能单继承,不能多继承,但是可以多层继承。
2、类和接口之间是实现关系,可以单实现,也可以多实现;还可以在继承一个类的同时,实现多个接口。
实现多个接口的时候需要重写里面所有的抽象方法。
3、接口与接口直接是继承关系,而且可以单继承,也可以多继承。
如果实现类,实现的是最下面的子接口的话,那么就需要重写这个 接口体系
所有的抽象方法。