Class and Interface in Java

2025年3月31日 | 阅读 5 分钟

Java中的类

一个可以被定义为具有相似类型属性的对象集合。它是一个逻辑实体,可以被视为创建对象的蓝图。一个类可以有很多对象,每个对象都具有类本身定义的属性和行为。然而,我们也可以创建一个只有单个实例的单例类。

Java中,一个类可以包含以下实体:

  1. 属性
  2. 行为(方法)
  3. 构造函数
  4. 嵌套类和接口

考虑以下声明Java中类的语法。

“class”关键字用于声明类。类声明可以按照顺序包含以下组件:

  1. 访问修饰符:这定义了类的访问修饰符,即类是public、private、protected还是default。
  2. class 关键字:声明类时必须使用 class 关键字。
  3. 类名:类名应遵循Java命名约定,并且必须采用驼峰式命名法。它也不能是任何关键字名称。
  4. 超类(如果需要):一个类可以继承任何基类(如果有)。extends 关键字用于在我们的类中继承任何基类。
  5. 接口(如果需要):一个类可以根据需要实现任何接口。implements 关键字用于在我们的类中实现任何接口。
  6. 类体:类体以开括号 { 开始,以闭括号 } 结束。我们可以在类体中定义实例变量、构造函数、方法、嵌套类和接口。

在Java中,类只是一个蓝图,只有在创建类的对象时才会占用内存。然而,Java提供了new关键字来创建类的对象。

考虑以下示例,以创建类的对象并使用对象访问类的行为。

输出

initial amount: 0.0
amount after credit 9002020.0
amount after debit 9000000.0

我们也可以使用另一个类来实例化这个类,即main方法可以放在另一个类中。考虑以下示例。

Bank.java

Main.java

输出

amount after credit 9002020.0

我们可以将多个实例变量封装在单个类中,以形成一个Java Bean。然而,我们可以修改访问说明符以确保;没有人可以直接使用类属性。

我们还可以利用Java中的继承来确保子类使用父类的属性和行为。考虑以下使用Java中两个类的多级继承示例。

Animal.java

Dog.java

输出

My Dog is eating .....
Dog is barking...

Java中的接口

Java中的接口可以定义为类的蓝图。接口可以有抽象方法和静态常量。通过使用接口,我们可以实现Java中的抽象。我们也可以使用接口在Java中实现多重继承。我们不能在接口中定义方法体。

接口与抽象类不同,即接口不能像抽象类一样被实例化。然而,接口中的字段是静态的、公共的和最终的;而方法是公共的和抽象的。

接口在Java中主要使用的原因如下:

  1. 我们可以通过使用接口来实现多重继承。
  2. 我们可以通过使用接口来实现抽象。
  3. 在Java中,接口也用于实现松耦合。

正如我们已经讨论过的,接口是类的蓝图,即类实现接口来定义其方法。然而,类以自己的方式实现接口。在这里,我们还应该注意,任何实现接口的类都必须定义其所有方法。

在Java中,interface 关键字用于声明接口。考虑以下声明接口的语法。

与类一样,接口也可以继承另一个接口。然而,类实现接口。考虑以下图来理解类和接口之间的关系。

Class and Interface in Java

考虑以下在Java中创建接口的示例。

Drawable.java

DrawRect.java

DrawCirlce.java

DrawMain.java

输出

We'll draw rectangle here
We'll draw Circle here

使用接口在Java中实现多重继承

在下面的示例中,我们将使用接口在Java中实现多重继承。

Drawable.java

Printable.java

Main.java

输出

We will use this one to print something....
We will use this one to draw something....

默认和静态方法在继承中

Java 8 允许我们在接口中定义方法体。然而,我们只能为默认方法定义方法体。此外,我们还可以在接口中定义静态方法。考虑以下示例。

Main.java

输出

this is a static method in the interface
this is a default method in the interface
We will use this one to draw something....