Java--接口概念

        通过不懈努力,终于学习到了下一章节--接口,接下来讲述一个接口的概念以及一些特性,包括自己的心得体会。

一:

对于个人理解,接口是最抽象的,比抽象类更抽象,它实现了设计与实现的分离,真正体现在现实生活

相当于"如果你是·····那就必须能做·······"的思想,总的来讲接口就是规范,定义了一组规则,凡是一个类实

现了一个或多个接口,就要随时使用实现了相应接口对象,并要遵从接口描述的统一格式进行定义。

二:

  接口主要来描述类具有什么功能,而并不能给出每个功能的具体实现。使用interface来定义一个接口


接口定义类似类的定义,分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口


的基本格式如下:


1 [修饰符] interface 接口名 [extends 父接口名列表]{
2 [public] [static] [final] 常量;
3 [public] [abstract] 方法;
4 }
    

修饰符:可选参数public,可以省略,则为默认的访问权限(public);

接口名:指定接口的名称,默认情况下,接口名必须是合法的Java标示符,一般情况下,要求首字符大写;

extends  父接口名列表:可选参数,指定定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。

方法:接口中的方法只有定义而不能有实现

三:

为了让类实现一个接口,一般需要两个步骤:

①:将类声明为实现给定的接口

②:对接口中的所有方法进行定义

步骤①需要使用关键字:implement

四:

在类的继承中,只能做单重继承,而实现接口时,一次则可以实现多个接口,每个接口间使用逗号“,”分隔

这时就可能出现常量或方法名冲突的情况,解决该问题时,如果常量冲突,则需要明确指定常量的接口,这可

以通过“接口名.常量”实现。如果出现方法冲突时,则只要实现一个方法就可以了。     

五:

       在接口中还可以定义常量,但是绝不能含有实例域,在Java SE 8之前,也不能在接口中实现方法,但是现

   在已经可以在接口中提供一些简单的方法,当然这些方法不能引用实例域,还是之前重要的那句话---接

   口中没有实例!

   下面编写一组代码,对一个Employee类实例数组进行排序的代码:

  (一些比较陌生的代码在代码注释中解释)

Employee类实现接口Comparable<Employee>:

package com.Interface;

import java.time.LocalDate;

public class Employee01 implements Comparable<Employee01>{
	private String name;
	private double salary;
	
	public Employee01(String name,double salary) {
		this.name = name;
		this.salary=salary;
	}

	public double getSalary() {
		return salary;
	}

	

	public String getName() {
		return name;
	}

	public void raiseSalary (double byPercent) {
		double raise = salary*byPercent/100;
		salary +=raise;
	}
	
	//Compares employee by salary
	//定义Comparable接口中 compareTo方法
	public int  compareTo(Employee01 other) {
		//使用静态 Double.compare方法,如果第一个参数小于第二个参数,返回负值,两者相等返回0,否则返回正值
		return Double.compare(salary, other.salary);
	}
}

EmployeeSortTest类进行测试:

package com.Interface;

import java.util.Arrays;

/**
 * This program demonstrates the use of the comparable inferface
 * @author 李阳
 *
 */
public class EmployeeSortTest {
	public static void main(String[] args) {
		Employee01[] staff = new Employee01[3];
		
		staff[1] =new Employee01("a", 30000);
		staff[0] =new Employee01("aaaa", 10000);
		staff[2] =new Employee01("ccc", 20000);
		
		Arrays.sort(staff);
		
		for (Employee01 e : staff) {
			System.out.println("name="+e.getName()+",salary="+e.getSalary());
		}
	}
}

打印一下结果:

name=aaaa,salary=10000.0
name=ccc,salary=20000.0

name=a,salary=30000.0

        最后的结果明显是有序排列,通过Arrays类的sort方法对Employee数组进行排序,则Employee类就必须实现Comparable接口。

开启了新的一章,小伙伴们有没有感觉学习更有动力了,加油少年!

小伙伴们可以关注我的公众号,留言必回复哦


Java核心基础

----------------------------------

长按关注哦(看那两撇小胡子)

基础 | 心得 | 经历 | 更重要的是开心嘛!



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值