1、接口是什么
前面我们说到继承,父类喝子类比较,相对来说,父类是一个比子类更抽象的类。这个抽象提现在两个方面:
1、父类中的属性和方法比子类要少;
2、在父类的方法中,我们只能笼统的描述,而子类可以更具体一点。
在继承的层次结构中,每个新子类都使类变的越来越明确喝具体。如果从一个子类追溯到父类,类就变得更通用,更不明确,类的设计应该确保父类包含它的子类的共同特征,有时候一个父类就会设计得非常抽象,以至于他没有任何具体的实例。这个时候我们可以定义这样一个类,类中的方法只有方法的定义,没有方法体,如果一个类中的所以方法都没有方法体,这个类我们就可以叫做接口。
接口格式 :
public interface 接口名{ }
与常规类中的class 不一样,接口用的是interface 。
接口的属性定义格式:
public static final 属性类型 属性名=初始值;
static:静态的,修饰属性或者方法,则可以通过类名/接口名直接使用。
final:不可变的,修饰属性时,属性必须初始化。
接口的方法定义
public abstract 方法返回值类型 方法名 (参数类型 参数名,....);
abstract:抽象的,修饰方法,则方法不能有方法体。
因为接口中的方法都是抽象方法,所以接口是没有构造方法的,不能创建对象。我们定义一个接口的作用是用来给子类扩展的,当然接口同样是一组数据类型,与继承不一样的是,一个类只能继承一个父类 但是可以实现多个接口。
创建一个移动硬盘接口
//创建一个移动硬盘接口 public interface storage { //定义品牌属性,初始化为 三星 public static final String brand="三星"; //定义尺寸属性,初始化为 4 public static final int Size=4; //定义储存图片的方法 public void picture(); //定义储存音乐的方法 public void Music(); }
创建好了接口,那么就可以去使用接口。当在一个创建好了一个类,要使用接口,就会用到一个关键字:implements。
使用接口的格式:
public class 类名 implements 接口名{ }
当我们要去使用一个接口 就必须重写/实现接口类中的所有方法。
需要注意的是:
1、由于接口中的访问权限修饰符默认的都是public,所有即使借口中没有写public,在实现的时候也必须机上public。
2、与类的继承相同,接口也可以成长实现类的父类,实现类对象自动转型为接口类。
创建一个电脑类,并实现接口。
//创建一个电脑类 public class computer implements storage { //定义品牌属性 public String brand; //定义尺寸属性 public int Size; //定义储存图片的方法 public void picture(){ System.out.println("储存图片"); } //定义储存音乐的方法 public void Music(){ System.out.println("储存音乐"); } //主方法 public static void main(String[] args){ //创建一个电脑对象 computer com=new computer(); //给电脑品牌赋值 String brand="联想"; //给电脑尺寸赋值 int Size=5; //输出 System.out.println("硬盘品牌是"+storage.brand+"尺寸是"+storage.Size+","+"电脑品牌是"+brand+"尺寸是"+Size); //调用方法 com.Music(); com.picture(); } }
然后我们运行一下:
硬盘品牌是三星尺寸是4,电脑品牌是联想尺寸是5
储存音乐
储存图片
当接口与子类中具有相同的属性,使用时:子类赋值后直接写属性名即可,而接口中则需要接口名.属性名。