Java 接口

//接口

public interface MyInterface {
    // 不能有构造方法,这是接口,不是类

    // 抽象方法
    public abstract void methodAbstract();

    public default void methodDefault(){
        System.out.println("接口中的默认方法");
        methodStatic();
        methodAbstract();
    }

    public static void methodStatic(){
        System.out.println("接口中的静态方法");
    }

    // 报错 不能有少了 abstract default static 修饰的方法
//    public void fun(){
//        System.out.println();
//    }

}

// 实现类1

public class MyInterfaceImpl implements MyInterface {
    public MyInterfaceImpl() {
    }
    
    @Override
    public void methodAbstract(){
        System.out.println("实现类实现了接口中的抽象方法");
    }

    @Override
    public void methodDefault(){
        System.out.println("实现类覆盖重写了接口默认方法");
    }

    public void methodImpl(){
        System.out.println("实现类中的成员方法");
//        super.methodDefault(); 报错
        methodDefault(); //本类中的methodDefault方法
    }
}

//实现类2

public class MyInterfaceImplTest implements MyInterface{
    @Override
    public void methodAbstract(){
        System.out.println("test实现类实现了抽象方法");
    }

    public void methodImpl(){
        System.out.println("test类中的成员方法");
        methodDefault();
    }
}

//主类

/**
 * Created by tianxin on 2020/2/22.
 * 接口总结:
(接口没有构造方法,抽象类有构造方法,
 接口中不能有自己的成员方法(只能有static abstract default方法)抽象类可以有自己的成员方法,
 接口中的实现类没有super字段 抽象类的继承类中可以有
 注:【因为一个类可以实现多个接口,super会出现歧义】 【继承关系一对一 只有一个父类】)

 * 1. 成员变量其实是常量(不可改变的量)
 * 格式: [public] [static] [final] 数据类型 常量名称 = 数据值
 * 注意: 常量名称完全大写 用下划线隔开
 *       常量一旦赋值,不能改变
 *
 * 2. 接口最重要的是抽象方法
 * 格式:  [public] [abstract] 返回值类型 方法名称(参数列表);
 * 注意: 实现类中必须覆盖重写接口所有的抽象方法,除非实现类是抽象类
 *
 * 3. 接口中可以有默认方法
 * 格式:[public] default 返回值类型 方法名称(参数列表){方法体}
 * 注意: 实现类中可以对默认方法进行覆盖重写
 *
 * 4. 接口中可以定义静态方法
 * 格式: [public] static 返回值类型 方法名称(参数列表){方法体}
 * 注意: 只能通过接口名称调用
 *
 * 5. 从java 9 开始 允许私有方法 只能被接口自己调用 不能被实现类调用
 */
public class DemoInterface {
    public static void main(String[] args) {
        MyInterfaceImpl myInterface = new MyInterfaceImpl();
        myInterface.methodAbstract();
        myInterface.methodImpl();
        System.out.println("===========================");
        MyInterfaceImplTest myInterfaceImplTest = new MyInterfaceImplTest();
        myInterfaceImplTest.methodAbstract();
        myInterfaceImplTest.methodImpl();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值