接口的概念
在Java中接口是一个全部由抽象方法组成的集合,接口需要用interface定义,里面只能有抽象的方法和常量。
接口体现的是事物扩展的功能,在Java中,类定义了一个实体,包括实体的属性,实体的行为。而接口定义了一个实体可能发生的动作,只有一个声明,没有具体的行为。
当一个方法在很多类中有不同的体现是时候这个时候就可以将这个方法抽象出来做成一个接口。
接口里面只能有不可修改的全局常量,只能有抽象的方法,接口没有构造方法。
接口成员特点
成员变量:只能是常量;默认修饰符 public static final
构造方法:没有,因为接口主要是扩展功能的,而没有具体存在
成员方法:只能是抽象方法, 默认修饰符 public abstract
类与类,类与接口以及接口与接口的关系
类与类
继承关系,只能单继承,但是可以多层继承
类与接口
实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口
接口与接口
继承关系,可以单继承,也可以多继承
抽象类和接口的区别
成员区别
抽象类 变量,常量;有抽象方法;抽象方法,非抽象方法
接口 常量;抽象方法
关系区别
类与类 继承,单继承
类与接口 实现,单实现,多实现
接口与接口 继承,单继承,多继承
设计理念区别
抽象类 被继承体现的是:”is a”的关系。共性功能
接口 被实现体现的是:”like a”的关系。扩展功能
案例:
创建Person接口(即“人”),它有setData()和getData()方法对“人”属性name、sex和birthday赋值和获得这些属性组成的字符串信息。创建类Student实现Person接口,并对自己的“学生”属性的成员变量sID、speciality设置值和获得它们值所组成的字符串信息。
people.java(接口)
package com.interfaces;
public interface People {
public void setData(String name,String sex,String birthday);
public String getData();
}
Student.java(实现接口的类)
package com.interfaces.impl;
import com.interfaces.People;
public class Student implements People {
private String name;
private String sex;
private String birthday;
private String sID="2014";
private String speciality="写代码";
@Override
public void setData(String name, String sex, String birthday) {
// TODO Auto-generated method stub
this.name=name;
this.sex=sex;
this.birthday=birthday;
}
@Override
public String getData() {
// TODO Auto-generated method stub
return "名字: " + name + ",性別: " + sex + ",生日: " + birthday + ",ID: " + sID + ",专长: " +speciality;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
People Yantai=new Student();
Yantai.setData("张杰", "男", "2016年8月19日");
System.out.println(Yantai.getData());
}
}
- 学习心得:通过学习了接口让我明白了作为接口来说,一个类可以从接口继承(或者叫实现接口),这也是多继承,接口里面的成员变量不专属于某个对象,都是静态的成员变量,是属于整个类的,因此一个类去实现多个接口也是无所谓的,不会存在对象之间互相冲突的问题。实现多个接口,也就实现了多重继承,而且又避免了多重继承容易出现问题的地方,这就是用接口实现多重继承的好处。
- 学习场景