接口的注意事项:
使用接口的时候:需要注意:
- 接口是没有静态代码块的statci{},也没有构造方法,一个类的父类只能有一个,但是一个类可以同时实现多个接口
- 格式:public class Myinterfaceimpl implements MyinterfaceA,MyInterfaceB{覆盖重写所有的抽象方法}
- 如果多个接口含有相同的抽象方法,则直接重写一回即可
- 如果没有覆盖重写全部的,必须是抽象类
- 接口中有相同的默认方法必须要重写,抽象类中也要重写
- 一个类如果直接父类的方法与接口的默认方法冲突,优先使用父类的方法*/
接口A
代码:
public interface MyInterfaceA {
/* static {
}错误写法,不能写静态代码块*/
/*abstract MyInterfaceA(){}不能写构造方法;*/
public abstract void methodA();//抽象方法不要(不能)写方法 体;
void method();
public static void method3()
{
System.out.println("wpos");
}
public default void methoddefault(){
System.out.println("AAA");
}
}
接口B
代码:
public interface MyInterfaceB {
/* static {
}错误写法,不能写静态代码块*/
/ *abstract MyInterfaceA(){}不能写构造方法;*/
public abstract void methodB();//抽象方法不要(不能)写方法体;
void method();
public default void methoddefault(){
System.out.println("BBB");
}
}
抽象类继承
代码:
public abstract class MyInterfaceabstract implements MyInterfaceA,MyInterfaceB {
@Override
public void methodA() {
System.out.println("覆盖重写了A方法");
}
//@Override
// public void methodB() {
// System.out.println("覆盖重写了B方法");
//}//抽象类中无需全部继承抽象方法,但是默认方法必须继承。
//默认方法必须要重写,在abstract类中也是
@Override
public void methoddefault() {
}
}
类直接继承:
代码:
package cn.itcast.day19.demo02;
public class MyInterfaaceimpl implements MyInterfaceA,MyInterfaceB {
@Override
public void methodA() {
System.out.println("覆盖重写了A方法");
}
@Override
public void method() {
System.out.println("覆盖重写了AB方法");
}
@Override
public void methoddefault() {
}
@Override
public void methodB() {
System.out.println("覆盖重写了B默认方法");
}
}
类直接继承与抽象类继承的区别:
直接继承要实现A,B中所有的方法的重写。否则就是抽象类。
(静态方法不用重写也不能重写。)
主类:
代码:
public class Demo01Interface {
public static void main(String[] args) {
Zi zi=new Zi ();
zi.method();
MyInterfaaceimpl tt=new MyInterfaaceimpl();
tt.method();
MyInterfaceA.method3();//调用静态方法直接使用接口.方法名称就可以了。
}
实现效果
}