接口的关键字:interface
接口的作用:作为数据类型、充当父类给子类扩展;
定义接口的语法格式:public interface 接口名 extends 接口名,...{
//只能定义常量
Public static final 数据类型 常量名 = 值;
//只能定义抽象方法
public 返回值数据类型 方法名(参数类型 参数名,...);
}
注意:接口默认的访问修饰符为public、接口不能实例化对象;
定义类实现接口的语法格式是:
public class 类名 implements 接口名,... {
//类中必须要实现接口中所有的抽象方法。
}
普通类class与接口interface的区别:
1.class的访问修饰符可以是:public、protected、默认的、private
而接口只有默认的访问修饰符:public;
2.class可以定义属性、普通方法、构造方法,而接口中只能定义常量和抽象方法;
3.class中可以实例化对象并调用方法,而接口不能实例化对象;
4.class可以继承另一个class,但子类只能继承一个父类(单继承),一个class可以通过implements实现多个接口,多个接口名之间用逗号隔开;而一个interface可以继承多个接口,被继承的接口之间也是用逗号隔开;一个 class可以继承另一个class后再实现多个接口;
5.子类继承父类的方法可以实现也可以不实现,而class继承interface的方法一定要实现,并且在实现接口的方法时,不能缩小方法的可见性;
抽象类:抽象类就是介于类和接口之间的一种特殊的类。
定义抽象的关键字:abstract class
定义抽象类的格式:public abstract class 抽象类名 extends 类名或者抽象类 implements 接口名,... {
//和类一样定义属性和方法
//和接口一样定义常量和抽象方法,但是抽象方法的格式不同
public abstract 返回值类型 方法名(参数类型 参数名,...);
}
代码例子:
定义一个类实现接口
/**
* 定义一个Person接口
*
*/
public interface Person {
// 接口中的属性默认是public static final ,只能是public static final
public static final int age = 100;
// 接口中的方法默认是public abstract ,只能是public abstract
public abstract void eat();
Public abstract void study();
}
/**
* 学生类,实现Person接口
*/
public class Student implements Person{
/**
* 必须实现接口中所有的方法
* 在实现接口的方法时,不能减小方法的可见性
*/
public void study(){
System.out.println("学生学习的方法!!");
}
public void eat(){
System.out.println("学生吃饭的方法!!");
}
<!--EndFragment-->
<!--EndFragment-->