java基础之接口

接口

关键词:interface,implements

  • 多继承:一个类可以继承多个接口 注:但是java是单继承的
  • 每个实现类必须实现接口的所有方法
  • 接口中不能有实例域和静态方法
  • 不能实例化接口
  • 可以声明接口的变量
  • 接口可以有常量
  • 接口的方法默认被声明为public ,接口的域被自动设置为public static final且不能设置为其他类型

在一个类同时继承一个父类和实现一个接口,发生冲突时,类优先

克隆

浅拷贝:对每个域进行拷贝,包括相同子对象的引用。导致克隆对象和员对象会公用子对象的应用

深拷贝:将原对象的子对象也拷贝,使其克隆对象的子对象和原对象的子对象不再是同一个引用。

深拷贝方法:

  • 实现cloneable接口
  • 重新定义clone方法,并指定public访问修饰符

即便是默认的浅拷贝能够满足要求,还是需要实现cloneable接口,将clone定义为public,然后调用super.clone()

class A implements Cloneable{
    public A clone() throws CloneNotSupprtedException{
        return (A)super.clone();
    }
}

深拷贝例子:

Class A{
    B b;
    public A clone() throwsCloneNotSupprtedException{
        A cloned=(A)super.clone();
        choned.b=(B)b.clone();
        return cloned;
    }
}

Comparator接口

为啥要说这个接口呢,其实是有利于对接口的一种很好的利用的理解,不单单只是简单的实现。


    static class LengthComparator implements Comparator<String> {
        public int compare(String first, String second) {
            return first.length() - second.length(); }
    }

    public static void main(String[] args) {
        String[] abc={"abc","bc","cccc","daffff"};
        Arrays.sort(abc);
        System.out.println(Arrays.toString(abc));
        Arrays.sort(abc,new LengthComparator());
        System.out.println(Arrays.toString(abc));
    }

以下是结果。
在这里插入图片描述
可以发现其实我们只是重写了Comparator,没有对sort进行一个修改,我们就可以直接利用sort()的功能了。这就是接口的一种经典用法。
简单说,我们履行了接口的义务(实现了接口),我们就能拥有接口的很多权力(比如这里sort())。

lambda表达式

为什么我把lambda表达式放在这里呢。因为事实上,在jdk1.8之后匿名内部类的实现就可以用lambda表达式,这里只是顺带提一句。我会在内部类的相关知识里面用实例介绍的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值