学习目录:
- 抽象类
- 抽象方法
- 接口
- 多个接口
一. 抽象类和抽象方法
数据抽象是隐藏某些细节,仅向用户展示必要信息的过程。
抽象可以通过抽象类或接口来实现。
抽象 关键字是一个非访问修饰符,用于类和方法:
- 抽象类:是一种受限的类,不能直接用来创建对象(要访问它,必须由其他类继承)。
- 抽象方法:只能在抽象类中使用,并且没有方法体。方法体由子类提供(继承自抽象类)。
抽象类可以同时包含抽象方法和常规方法。
1. 1 例子:
这段代码定义了一个抽象类 Animal
,其中包含一个抽象方法 animalSound()
和一个常规方法 sleep()
。
1 | abstract class Animal { |
从上面的示例中,无法创建 Animal 类的对象:
1 | Animal myObj = new Animal(); // 将会产生错误 |
2. 要访问抽象类,必须从另一个类继承它
接上述示例 1:
1 | // 抽象类 |
二. 接口
在 Java 中,另一种实现抽象的方式是使用接口。
接口是一种完全的“抽象类”,用于将相关的方法归类,这些方法没有方法体。
1 | interface Animal { |
要访问接口的方法,必须通过另一个类使用关键字 **implements
**(类似于继承)来“实现”该接口,而不是使用 **extends
**。接口方法的具体实现由“实现”接口的类提供。
翻译:
- **
implements
**:关键字,用于实现接口的方法。 - **
extends
**:用于继承类,不适用于实现接口。
1. 2 例子:分 3 段翻译,有部分1.0,2.0,3.0
1 | // 接口 |
**部分1.0 翻译 : ** 在 Java 中,接口只声明方法,而不提供方法体。
interface
(接口) 是一种特殊的类类型,用于定义一组方法(行为),但不提供具体的实现。Animal
是一个接口,定义了两个方法:animalSound()
和sleep()
,但没有提供它们的具体实现。
部分2.0 翻译: 类 Pig
实现 Animal
接口
Pig
类 实现了Animal
接口,这意味着Pig
类必须提供接口中所有方法的具体实现。animalSound()
方法的实现是打印"阿伟的叫声: 不要啦!杰哥!不要"
。sleep()
方法的实现是打印"Zzz"
。
部分3.0 翻译: 主类main
Main
类 中定义了main
方法,这是 Java 程序的入口点。main
方法中的代码是程序开始执行时运行的部分。Pig myPig = new Pig();
:创建了Pig
类的对象myPig
。myPig.animalSound();
:调用myPig
对象的animalSound()
方法,输出"阿伟的叫声: 不要啦!杰哥!不要"
。myPig.sleep();
:调用myPig
对象的sleep()
方法,输出"Zzz"
。
2 接口小总结:
- 像抽象类一样,接口不能用来创建对象。
- 接口方法没有方法体 - 方法体由“实现”该接口的类提供。
- 实现接口时,必须重写所有接口的方法。
- 接口方法默认是
public
和abstract
的。 - 接口的属性默认是
public static final
的。 - 接口不能包含构造方法(因为接口不能用于创建对象)。
3 多个接口
- 实现多个接口,用逗号隔开
1 | // 定义第一个接口 |
总结:
- **
FirstInterface
和SecondInterface
**:两个接口分别声明了myMethod()
和myOtherMethod()
方法,但没有提供实现,具体实现需要在类中提供。 - **
DemoClass
**:实现了这两个接口,并为其方法提供了具体实现。调用myMethod()
时打印"Some text.."
,调用myOtherMethod()
时打印"Some other text..."
。 Main
类:在main
方法中创建DemoClass
对象并调用了myMethod()
和myOtherMethod()
方法,演示了接口的实现与方法的调用。