软件构造lab2感悟
接口、抽象类
1.接口概念
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
2.接口应用
接口Graph
这里有一个新概念:泛型,泛型方法在调用时可以接收不同类型的参数。
public interface Graph<L> {
public static <L> Graph<L> empty() {
return new ConcreteEdgesGraph<L>();
}
public boolean add(L vertex);
...
}
在该接口可以看到定义了一个方法empty,似乎与概念有所矛盾,实际是java 8中新增了接口的默认方法,简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。
接口实现方法一共有两种:
1. 在方法名前面加个 default 关键字。
2. 可以声明(并且可以提供实现)静态方法。
empty方法即是采用了第二种。
其他方法如add则在其实现的子类完成。
1.边、点保存
提供边集和点集。可以按照邻接矩阵的概念完成。
具体实现方法如下
public class ConcreteEdgesGraph<L> implements Graph<L> {
…
}
在方法前加@Override重写方法
@Override
public boolean add(L vertex) {
…
}
2.点保存
提供点集,可以按照邻接表的概念完成。具体方法与上相近。
3.抽象类概念
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。
在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
4.抽象类应用
使用abstract class来定义抽象类。
设定的一些类即含有抽象类,如JFrame。基于JFrame继承可以设计一些基本绘图。
public class Picture extends JFrame {
...
}
上一篇: 软件构造Lab2