Java学习-接口

package myPackage;

/**
 * interface Comparable<T>
 * {
 *      int compareTo(T o);
 * }
 */

public class Employee implements Comparable<Employee>
{
    //Comparable<Employee>是一个模版类,是可以使用具体的类进行实例化声明的
    private String m_sName = "";
//    private double m_dSalary = 0;
    //通常情况下,Java建议尽量不使用基础类型,以提供更好的跨平台支持,保证在不同平台下的类型一致
    private Double m_dSalary = 0.0;//并且当使用了指定类型后,就会进行类型检查,=0的赋值是会报错的
    public Employee(String name,Double salary)
    {
        m_sName = name;
        m_dSalary = salary;
    }
    public String getName()
    {
        return m_sName;
    }
    public double getSalary()
    {
        return m_dSalary;
    }
    //若要实现排序sort,则需实现Comparable接口
    /**
     * 为什么不直接在Employee类中提供一个compareTo方法呢?
     * 因为Java是强类型语言,在sort方法被调用的时候,sort方法中可能存在compareTo的调用,
     * 编译器必须确定比较的对象具有compareTo方法,以避免出错,所以要求所有使用sort排序的类都要实现Comparable接口,
     * 这样就可以保证一定有compareTo方法了。
     */
    public int compareTo(Employee other)
    {
        return Double.compare(m_dSalary, other.m_dSalary);
        //other.m_dSalary,在类方法中,同一个类的对象间是可以访问private实例域的
        //compare比较两个数的大小,相等返回0,前者小则返回一个负数,前者大则返回一个正数
    }
}

package myPackage;

import java.util.Arrays;

/**
 * 接口是用来描述类具有什么功能,而并不给出每个功能的具体实现
 * 接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义
 * 接口中的方法自动的属于public
 * 最重要的是,要知道接口不应该提供哪些功能。
 * 接口绝不能含有实例域,也不能在接口中实现方法。
 * 提供实例域和方法实现的任务应该交给实现接口的那个类来完成。
 * 可以将接口看成是没有实例域的抽象类,但切记接口不是类。
 */

public class Session6
{
    public static void main(String[] args)
    {
        Employee[] staff = new Employee[3];//创建一个Employee数组
        staff[0] = new Employee("hary",8888.0);//引用一个对象,参数必须指定浮点型,会有类型检查,默认double,加F后则为float
        staff[1] = new Employee("jack",7000.0);
        staff[2] = new Employee("tony",4555.0);
        Arrays.sort(staff);
        for(Employee e : staff)
        {
            System.out.println(e.getName()+"'s "+"salary is : "+e.getSalary());
        }
    }
}
输出结果:
tony's salary is : 4555.0
jack's salary is : 7000.0
hary's salary is : 8888.0
package myPackage;

//接口的写法和类的写法一致,只是接口中不能包含实例域和方法
public interface MyInterface
{
    //接口中的方法自动的成为public,可以不用显示的使用public进行修饰
    //同样也不建议使用public修饰,增加了许多不必要的关键字
    void testInterface();
}
//并且接口还可以扩展,可以从其它接口扩展
//和类的写法一样,一个类文件中只能有一个public接口或类
//要使用public修饰,则必须在它自己的类文件中进行声明
//和类一样,虽然书上说的扩展,但就语法上,是接口的继承
/**
 *和类不一样的是,Java中类不支持多继承,但却支持从多个接口扩展,多个接口间用,号分隔
 */
/*public */interface MyInterface2 extends MyInterface
{
    void testInterface2();
    //接口中虽然不能定义方法,但却可以包含常量
    //接口中的域将被自动的设置为public static final
    Integer INTEGER_TEST = 65535;
    //Java的语法中增加了许多特定场合使用的特性,比如这里的接口域,实际是增加了语言的复杂性
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值