抽象类

在Java中,抽象类(Abstract Class)是一种不能被实例化的类,它通常用于以下几种场景:

  1. 定义通用接口:抽象类可以定义一组子类共有的方法和属性,为子类提供一个通用的接口。这样,子类只需要实现具体的细节,而不需要重复定义公共部分。

  2. 部分实现:抽象类可以包含已经实现的方法,这些方法可以被所有子类共享。子类只需要实现抽象方法,而不需要重新实现已经定义好的方法。

  3. 强制子类实现特定方法:通过在抽象类中定义抽象方法,可以强制所有子类必须实现这些方法。这样可以确保子类具有某些基本功能。

  4. 代码复用:抽象类可以包含一些通用的实现,这些实现可以被多个子类复用,从而减少代码重复。

  5. 多态性:抽象类可以作为多态的基础,允许使用抽象类的引用指向其具体子类的实例,从而实现更灵活的编程。

以下是一个简单的例子,展示了抽象类的使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// 定义一个抽象类
abstract class Animal {
// 抽象方法,子类必须实现
public abstract void makeSound();

// 已经实现的方法,子类可以直接使用
public void sleep() {
System.out.println("Sleeping...");
}
}

// 具体子类
class Dog extends Animal {
@Override //@Override 是一个注解(Annotation),用于标识一个方法是被重写的(Override)。
public void makeSound() {
System.out.println("Bark");
}
}

class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow");
}
}

public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
dog.makeSound(); // 输出: Bark
dog.sleep(); // 输出: Sleeping...

Animal cat = new Cat();
cat.makeSound(); // 输出: Meow
cat.sleep(); // 输出: Sleeping...
}
}

在这个例子中,Animal是一个抽象类,定义了一个抽象方法makeSound和一个已经实现的方法sleepDogCatAnimal的具体子类,它们必须实现makeSound方法,但可以直接使用sleep方法。

接口

在Java中,接口(Interface)是一种抽象类型,它定义了一组抽象方法接口interface的特点在于,可以引用多个接口。接口默认为抽象类.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package review;
//接口的特点在于,可以引用多个接口。
//接口默认为抽象类,的每一个方法应当实现
//1 创建接口
interface StartStop{
void start();
void stop();
}

class Car implements StartStop{
public void start() {
System.out.println("the car is start");
}

public void stop() {
System.out.println("the car is stop");

}


}

class meeting implements StartStop{
public void start() {
System.out.println("the meting is start");
}

public void stop() {
System.out.println("the meting is stop");

}


}





public class a7_interface {
//此处为抽象类特性

public static void main(String arg[]) {
StartStop array[]=new StartStop[2];
array[0]=new Car();
array[0].start();
array[1]=new meeting();
array[1].stop();
}
}