欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

软件构造lab2感悟

程序员文章站 2022-03-10 14:49:14
...

接口、抽象类

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 {
  ...
}