接口

接口

大公司就是提前定义好接口 提前约束好你需要实现什么数据
这样就可以让员工们去分别实现这个功能

接口就是多个类的公共规范。接口是一种引用数据类型,最重要的内容就是其中的:抽蒙方法。如何定义一个接口的格式。public interface {(//接口内容}

备注:换成了关键字interface之后,编译生成的字节码文件仍然是:.java–>.class。
如果是Java7,那么接口中可以包含的内容有: 1.常量2.抽象方法

如果是Java8,还可以额外包含有: 3.默认方法4.静态方法

如果是Java9,还可以额外包含有: 5.私有方法

抽象方法的接口使用

接口使用方法:

  1. 接口不能直接使用,必须有个实现类来实现接口方法 public class xxx implements yyy
  2. 实现类必须实现接口中 所有抽象方法
  3. 创建实现类的对象并且进行使用
  4. 如果实现类没有实现所有方法,那他就需要变成抽象类

接口和抽象类一样 不可以new 因为他们根本就没有构造器

接口其实和抽象类很像 只是关键字 和 单继承关系不一样

接口是定义好interface文件 然后用一个class implements 这个interface文件(在里面override方法)
抽象是定义好abstract文件 然后用一个class extends 这个abstract文件(在里面override方法)

注:

  1. 接口里所有的方法默认都是 public abstract 的隐藏修饰
  2. public abstract void add() 和 void add() 其实是一样的
  3. 可以在接口定义常量 但是完全没必要
  4. public static final int age = 99 和 int age = 99 其实是一样的
  5. 一个implements文件可以同时实现几个接口 所以侧面的实现了 伪.多继承
//接口的话 把class换成 interface关键字
//所有接口都必须有实现类
public interface UserService {

    //基本不会有人在在接口里定义常量
    //接口里所有的属性 默认都是 public static final 的隐藏修饰
    //定义出来就是一个静态不可变的常量
    //public static final int age = 99;
    int age = 99;

    //接口里所有的方法默认都是 public abstract 的隐藏修饰
    //public abstract void add(String name); //这个和下面的相等
    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
}
public interface TimeService {
    void timer();
}
//一个类可以实现接口 通过implements关键字来实现
//实现接口的类就要重写他的所有方法

//这就从侧面实现了伪.多继承
public class UserAndTimeImpl implements UserService,TimeService{
    @Override
    public void add(String name) {

    }

    @Override
    public void delete(String name) {

    }

    @Override
    public void update(String name) {

    }

    @Override
    public void query(String name) {

    }

    @Override
    public void timer() {

    }
}

接口类也可以直接写在相同的java文件里并且直接去实现它

public class Direct {
    private int id;

    //这是一个方法 里面有局部内部类去实现接口
    public void impl(){
        //在这里实现下面的接口
        //没有名字 其实也可以写成下面的形式
        /*  和安卓的书写格式一样。。。。。
            UserTest usertest = new UserTest(){
            
            
            };
         */
        new UserTest(){
            @Override
            public void print() {
                System.out.println("在方法里写的实现下面接口的匿名内部类");
            }
        };
        
    }
    
}

//在这个class下写你的接口,记住 每个java文件根目录下只能有一个public
interface UserTest{
    void print();
}

默认方法的接口使用

从Java8开始 允许使用默认方法接口
public default 返回值类型 方法名称(参数列表){
方法体
}
目的 解决接口升级问题,当接口升级时(增加方法时),实现类会因为缺少override抽象方法而报错,为了避免已经投入运行的实现类报错,我们需要用一个更温和的手段去更新新的接口和实现类,于是默认方法接口应运而生。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值