北京网站建设方案书北京it培训机构哪家好
java中的接口(interface)
目录
- java中的接口(interface)
- 接口定义
- 接口特点
- 类实现(implements)接口
- 接口综合举例
接口定义
接口:用interface来定于,是抽象方法和全局常量的集合。在java中,接口和类是两个并列的结构。
接口特点
- 使用关键字interface表示接口;
- 接口中的成员变量默认是由public static final修饰的。因此,通常省略掉去掉static final;
- 接口中的抽象方法默认是由public static修饰的。因此,通常省略掉去掉static;
- 接口中不能定义构造器;
- 接口不能实例化;
- 接口可以实现多继承,弥补了了类的单继承缺陷。
注意:
jdk7及以前:只能够定义全局常量和抽象方法。
jdk8:除了定义全局常量和抽象方法之外,还可以定义静态(static)方法、默认(default)方法
类实现(implements)接口
//格式
class Person implements interfaceA{}
一个类可以实现多个接口,接口也可以继承其它接口。 若有继承(extends),则要写到implements前面。
//格式
class Person extends Object implements interfaceA,interfaceB{}
java开发中,接口通过让类去实现(implements)的方式来使用.
- 如果实现类覆盖了接口中的所有的抽象方法,则此实现类就可以实例化。
- 如果实现类没有覆盖接口中所有的抽象方法,则此实现类仍为一个抽象类。
接口综合举例
定义一个接口用来实现两个对象的比较。
interface CompareObject{
public int compareTo(Object o); //若返回值是 0 , 代表相等; 若为正数,代表当
前对象大;负数代表当前对象小
}
public interface CompareObject {//若返回值是 0 , 代表相等; 若为正数,代表当前对象大;负数代表当前对象小public int compareTo(Object o);//省略了static
}
定义一个Circle类,声明redius属性,提供getter和setter方法
public class Circle {private Double radius;public Circle() {super();}public Circle(Double radius) {super();this.radius = radius;}public Double getRadius() {return radius;}public void setRadius(Double radius) {this.radius = radius;}}
定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在ComparableCircle类中给出接口中方法compareTo的实现体,用来比较两个圆的半径大小。
public class ComparableCircle extends Circle implements CompareObject{public ComparableCircle(double radius){super(radius);}@Overridepublic int compareTo(Object o) {if(this == o){return 0;}if(o instanceof ComparableCircle){Circle c = (ComparableCircle)o;//错误的,int强转会损失精度,万一2.3-2.4,强转之后为0,所以应该进行正负数判断
// return (int)(this.getRadius() - c.getRadius());//正确的方式一
// if(this.getRadius() > c.getRadius()){
// return 1;
// }else if(this.getRadius() < c.getRadius()){
// return -1;
// }else{
// return 0;
// }//正确的方式二//当属性radius声明为Double类型时,可以调用包装类的方法return this.getRadius().compareTo(c.getRadius());}else{
// return 0;throw new RuntimeException("传入的数据类型不匹配");}}
}
定义一个测试类InterfaceTest,创建两个ComparableCircle对象,调用compareTo方法比较两个类的半径大小。
public class ComparableTest {public static void main(String[] args) {ComparableCircle test1 = new ComparableCircle(3.2);ComparableCircle test2 = new ComparableCircle(3.3);int compareValue = test1.compareTo(test2);if(compareValue > 0){System.out.println("test1对象大");}else if(compareValue < 0){System.out.println("test2对象大");}else{System.out.println("test1和test2一样大");}int compareValue1 = test1.compareTo(new String("AA"));//拋异常
// System.out.println(compareValue1);}
}
参考:
https://www.bilibili.com/video/BV1Kb411W75N/?p=371&vd_source=e3d2dcdad07ba1c727f3c9e7654f60b5
