接口5.30笔记

    在Java中接口不是类,而是对类的一组需求描述,可以理解成建立在类和类之间的桥梁规范。

    例:我要实现对Employee类的员工对象进行排序,我们可以使用Arrays类sort方法,但是Arrays类的sort方法不知道需要按什么排序,所以需要规范一个函数名,并提供区分对象间的方法。

        要实现Arrays类的类方法sort对Employee类对象的工资高低进行排序,就需要实现Comparable接口

public interface Comparable<Employee>
{
    int compareTo(Employee e)
}

    为了让类实现一个接口,通常需要下面两个步骤:

    1.将类声明为实现给定的接口(使用关键字implements)

    2.对接口的所有方法进行定义(接口中的方法自动属于public 不需要自行添加public)

    Comparable只有一个方法,而大多接口是多个方法,接口还可以定义常量,在javase8之前不能在接口中实现方法,java8之后可以实现简单的方法。

下面是Employee实现Comparable接口的代码:

public class Employee implements Comparable<Employee>
{
private String name;
private double Salary;
public int compareTo(Employee e)
{
return Double.compare(this.Salary,e.Salary);
}
...
}

二,接口特性

    1.接口不是类,不能实例化对象不能用关键字new 来构造一个接口对象

    Comparable a=new Comparable();//报错

    2.但是可以声明一个接口变量

    Comparable a;//ok

    3.声明接口变量必须指向实现接口的类对象

    Comparable a=new Employee();//ok

    4.接口可以像类一样的被其他接口继承

public interface M
{
.....
}
public interface N extends M
{
...
}

    5.接口中不能有实例域和或静态方法,但却可以包含常量。跟接口中方法一样,接口中的域自动设置为public static final

    

public interface M
{
int faction();
int fv=333;
}

        注意:可以将接口中的方法和域加上public和public static final 不会报错但不建议这么做 没有必要多此一举 

    instanceof关键字:

            1.看对象能否成功转换成特定的类的对象

                   

    if(e instanceof Manager)
        {
            Manager m=(Manager)e;
        }

            可以避免一些类型转换异常,一般用于超类转向子类对象

            2.可以用instanceof检查一个对象的类是否实现了相应的接口

                    

if(e instance Comparable)
{
.....
}

            有的接口定义了常量没有定义方法,比如SwingConstants就是这样的一个接口,实现这个接口的类,将继承这个接口中的常量,并可以直接访问接口中的常量而不需要想“SwingConstants.某个常量”。

 

        java中一个类只能继承一个超类,但可以实现多个接口,接口名字用都好隔开即可。这就是接口跟抽象类的最大区别,由于java是单继承不想C++多继承,所以java需要多继承的地方用接口来替代,从而是的代码更简洁明朗。

        javase8之后,允许在接口中增加静态方法。目前为止,通常的做法是将静态方法放在伴随类中如:Path跟Paths

 

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值